Android通知活动赢得';t发射

Android通知活动赢得';t发射,android,android-layout,android-manifest,Android,Android Layout,Android Manifest,我有一个android活动,它也在通知栏上显示一个通知,并在下拉菜单中进一步描述它。尝试单击通知时会出现问题。从我在大多数其他问题中看到的情况来看,在它上面加上一个标志以清除其他观点应该可以解决问题。然而,这是我的代码: String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); int icon

我有一个android活动,它也在通知栏上显示一个通知,并在下拉菜单中进一步描述它。尝试单击通知时会出现问题。从我在大多数其他问题中看到的情况来看,在它上面加上一个标志以清除其他观点应该可以解决问题。然而,这是我的代码:

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

int icon = R.drawable.stat_sys_secure;
CharSequence tickerText = "Browser Security Enabled";
long when = System.currentTimeMillis();

Notification notification = new Notification(icon, tickerText, when);

Context context = getApplicationContext();
CharSequence contentTitle = "Browser Security";
CharSequence contentText = "Security Vulnerability Detected";
Intent notificationIntent = new Intent(this, PrivacyMessage.class);

//Should clear current view, and show this new activity
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

final int HELLO_ID = 1;
mNotificationManager.notify(HELLO_ID, notification);
PrivacyMessage启动的活动有一个oncreate,它将自己的XML文件设置为contentview,并且应该显示出来。但是,当单击通知时,它不会执行任何操作,只会将您返回到您所在的活动。我的想法是,我可能需要将新的活动添加到清单中,但我很难准确地确定应该添加什么以及在哪里添加。这是我的当前清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.browser"
      android:versionCode="1"
      android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
    <application android:icon="@drawable/icon" 
                android:label="@string/app_name" 
                android:debuggable="true">
        <activity android:name=".Browser"
                  android:label="@string/app_name"
                    android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="7" />
</manifest>


我希望我只是错过了某个显而易见的地方。但是,如果至少有一个活动可用,那么在任何情况下?

首先标记不会强制创建新活动,因此在大多数情况下,只会调用onResume方法(请检查)

那么,如果您有一个活动,它如何知道要显示什么?您需要做的是找到一种方法来区分从启动器调用应用程序和从通知调用应用程序的意图


您应该在清单中专门为通知处理创建第二个意图过滤器。然后在onCreate/onResume中,检查意图以了解您在哪种情况下,并相应地填充视图

首先,如果至少有一个活动可用,那么这些标志不会强制创建新活动,因此在大多数情况下,只会调用onResume方法(请检查)

那么,如果您有一个活动,它如何知道要显示什么?您需要做的是找到一种方法来区分从启动器调用应用程序和从通知调用应用程序的意图


您应该在清单中专门为通知处理创建第二个意图过滤器。然后在onCreate/onResume中,检查意图以了解您在哪种情况下,并相应地填充视图

我实际上有两项活动。上面第一个黑色部分中的代码来自一个名为Browser的活动,但我的理解是,该通知将调用我的另一个活动—PrivacyMessage.class,该活动在创建新意图时被调用。如果有多个活动被调用,我想我只是缺少清单中的活动?但是,活动清单中的意图过滤器做什么呢?如果您希望通过意图找到您的PrivacyMessage类,您需要在清单中声明它,实际上有两个活动。上面第一个黑色部分中的代码来自一个名为Browser的活动,但我的理解是,该通知将调用我的另一个活动—PrivacyMessage.class,该活动在创建新意图时被调用。如果有多个活动被调用,我想我只是缺少清单中的活动?但是,活动清单中的意图过滤器是做什么的呢?如果希望通过意图找到PrivacyMessage类,则需要在清单中声明它