2011-07-06 19 views
2

通知バーに通知を表示するアンドロイドのアクティビティがあり、プルダウンメニューにその通知が表示されます。この問題は、通知をクリックしようとしたときに発生します。私が他のほとんどの問題で見たことから、他のビューをクリアするためにフラグを立てれば、問題は解決されます。しかし、これは私が持っているコードです: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はcontentviewする独自のXMLファイルを設定し、OnCreate関数を持ち、最大表示されなければなりません。しかし、通知がクリックされたときに何もしないで、あなたが入っていたアクティビティに戻るだけです。私の考えは、新しいアクティビティをマニフェストに追加する必要があるかもしれないが、 、 そして、どこ。私はちょうどどこかに疑いの余地なく明らかに欠けていることを願っています

<?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> 

:これは私が持っている現在のマニフェストです。しかし、どんなアイディアですか?

答えて

0

少なくとも1つが利用可能な場合、最初のフラグは新しいアクティビティの作成を強制しません。ほとんどの場合、onResumeメソッドだけが呼び出されます(Activity lifecycleを確認してください)。

次に、1つのアクティビティがある場合、どのように表示するかをどのように知っていますか?あなたがする必要があるのは、アプリをランチャーから呼び出すことと、通知から呼び出すことの間の意図を区別する方法です。

通知処理のためにマニフェストに2番目のインテントフィルタを作成する必要があります。次に、onCreate/onResumeで、あなたがいる場合を知る意思を確認し、それに応じてビューを作成します。

+0

私は実際に2つの活動をしています。上記の最初の黒のコードはBrowserと呼ばれるアクティビティからのコードですが、私の理解では、新しいインテントの作成で呼び出される他のアクティビティ、つまりPrivacyMessage.classが通知されることを理解しました。複数のアクティビティが呼び出されている場合は、そのマニフェストのアクティビティが不足していると思いますか?しかし、アクティビティ内の意図フィルタは何をしますか? – Lark

+0

マニフェストで宣言する必要があるインテントによってPrivacyMessageクラスが見つかるようにする場合 – XGouchet

関連する問題