我希望以与用户在启动器中点按其图标时完全相同的方式从状态栏通知中恢复我的应用.
那就是:我希望堆栈处于与用户离开之前相同的状态.
在通知上设置待处理意图时的问题是它始终以特定活动为目标.我不想要这个.我需要像启动器那样恢复应用程序.
因此,如果用户处于活动A中,我想恢复活动A.如果他已从活动A启动活动B,那么我希望在用户点击通知时显示B,并且要恢复堆栈以便A获得用户点击B中的后退按钮时恢复
还有其他几个问题与类似的标题,但没有一个解决我的问题.
我在这里有一个简单的webview活动,加载后它会自动显示正在进行的通知.我们的想法是,人们可以远离此活动,并通过下拉菜单并选择它,从他们想要的任何屏幕再次快速访问它.然后,当他们想要时,他们可以通过点击菜单按钮并点击退出来关闭通知,然后清除通知.一切正常.但是,当按下通知时,它会启动活动的新实例.我需要更改什么才能看到活动是否尚未被销毁,我可以回调用该实例(恢复它),因此不需要再次加载它,也不需要在我的堆栈中添加其他活动.有任何想法吗?任何帮助将不胜感激.
package com.my.app;
import com.flurry.android.FlurryAgent;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class Chat extends Activity {
private ProgressDialog progressBar;
public WebView webview;
private static final String TAG = "Main";
private NotificationManager mNotificationManager;
private int SIMPLE_NOTFICATION_ID;
@Override
public void onStart() {
super.onStart();
CookieSyncManager.getInstance().sync();
FlurryAgent.onStartSession(this, "H9QGMRC46IPXB43GYWU1");
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); …
Run Code Online (Sandbox Code Playgroud) resume notifications android android-intent android-activity
申请(非通缉)行为 -
但是 - 不是原始实例,而是启动新实例(例如,在最新实例中缺少原始文本;当最新实例关闭时,仍然存在具有原始文本的原始实例).
通知方法的代码
Context context = getApplicationContext();
CharSequence contentTitle = "someText1";
CharSequence contentText = "someText2";
Intent notifyIntent = new Intent(Intent.ACTION_MAIN);
notifyIntent.setClass(getApplicationContext(), RadioStream.class);
PendingIntent intent =
PendingIntent.getActivity(RadioStream.this, 0, notifyIntent, 0);
notifyDetails.setLatestEventInfo(context, contentTitle, contentText, intent);
mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);
Run Code Online (Sandbox Code Playgroud)
我也在清单xml文件中跟随标记
android:launchMode="singleTask"
Run Code Online (Sandbox Code Playgroud)
但它仍然是相同的...主要问题是应用程序的双/三初始化,我知道还有其他方法可以保留恢复的应用程序中的值.此外,还需要应用程序在后台运行,因为主要功能是互联网广播流.
代码中缺少什么?我方缺少哪些信息来解决问题?
谢谢!
DAV
嗨,我已经能够显示我的活动的通知,当用户点击通知时,应用程序重新启动.但是我只是希望它重新出现而不是重启.例如.它是一个Web应用程序,我希望它在用户选择通知时出现在前面..但不刷新网页.我可以捕获这个意图还是我发错了意图?通常,如果我按下主页按钮并单击应用程序图标,应用程序就会出现并且不会刷新/重新启动.所以这就是我想要的行为.有任何想法吗 ?
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(ns);
//2.Instantiate the Notification
int icon = R.drawable.notification_icon;
CharSequence tickerText = "My App"; // temp msg on status line
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
notification.flags |= Notification.FLAG_ONGOING_EVENT;
//3.Define the Notification's expanded message and Intent:
Context context = getApplicationContext();
CharSequence contentTitle = "Notification";
CharSequence contentText = "My app!"; // message to user
Intent notificationIntent = new Intent(this, HelloAndroid2.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0); …
Run Code Online (Sandbox Code Playgroud) notifications android background foreground android-pendingintent
我有一个Android应用程序,当它运行服务时,我想在状态栏上显示通知.然后用户可以通过按HOME键导航到其他应用程序.但是,当我尝试通过通知图标将之前运行的应用程序恢复到Front时,现有活动存在一些问题.即使我将其声明为"单顶"模式(我想运行现有的活动,因为有关联的服务正在运行),不知何故,在OnResume之前已经调用了活动的OnDestroy.这是我创建通知对象的代码.你能指点我错了吗?谢谢.
private void showNotification ()
{
Intent toLaunch = new Intent(getApplicationContext(),
MySingleTopActivity.class);
PendingIntent intentBack = PendingIntent.getActivity(getApplicationContext(), 0,toLaunch, PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(getApplicationContext(),
getText(R.string.GPS_service_name), text, intentBack);
....
}
Run Code Online (Sandbox Code Playgroud) 我想在 Fragment 类中启动一个 CountDownTimer,当计时器到达时,比如说 3 分钟,Fragment 类(尽管应用程序在后台)将创建一个通知。当用户推送通知时,使用 CountDownTimer 保存此片段的应用程序应该恢复到其“状态”,就好像它是从主屏幕重新打开一样。所以当用户点击“后退按钮”时,用户应该被带到应用程序中的前一个活动,而不是回到主屏幕。
我的 Fragment_C.java 类,它在 Activity_C.java 类中:
package example.app;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v4.app.Fragment;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
public class Fragment_C extends Fragment {
static int amount;
static String phone;
static String message;
long mMilliseconds;
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("HH:mm:ss"); …
Run Code Online (Sandbox Code Playgroud)