15

このコードは通知を作成します。あなたはそれをクリックすると、現在のアプリケーションが実行される(意図がある、Entryで作成された私の唯一のActivity)、Androidの開発者のブログを少し変更したバージョン:通知時にAndroidコールメソッドをクリック

private void makeIntent() { 
    NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    Notification note = new Notification(R.drawable.prev, "Status message!", System.currentTimeMillis()); 
    Intent intent = new Intent(this, Entry.class); 
    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0); 
    note.setLatestEventInfo(this, "New Email", "Unread Conversation", pi); 
    note.flags |= Notification.FLAG_AUTO_CANCEL; 
    mgr.notify(NOTIFY_ME_ID, note); 
} 

しかし、私は開始したくありません現在のアクティビティでメソッドを実行するだけです。私が今までに読んだことから、startActivityForResult()のようなメソッドを使用してintent-filtersを実装してonActivityResult()を実装する必要があると思いますが、IntentPendingIntentのものを変更すると、使用可能な結果はまだありません。 EntryIntentが作成されている私のメインActivity)のメソッドを呼び出すか、新しくNotificationをクリックしたときに発信または着信するIntentsをキャッチすることは可能ですか?

PS。このスレッドが重複しているスレッドであれば、私の謝罪は非常に遅いので、正しく検索することはできません。

答えて

13

、マニフェストファイルであなたのactivityandroid:launchMode="singleTop"を追加する方法protected void onNewIntent(Intent intent) { ... }を持っており、このコードを使用します。

private static final int MY_NOTIFICATION_ID = 1; 
private NotificationManager notificationManager; 
private Notification myNotification; 

void notification() { 
    notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    myNotification = new Notification(R.drawable.next, "Notification!", System.currentTimeMillis()); 
    Context context = getApplicationContext(); 
    String notificationTitle = "Exercise of Notification!"; 
    String notificationText = "http://android-er.blogspot.com/"; 
    Intent myIntent = new Intent(this, YourActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(YourActivity.this, 0, myIntent, Intent.FILL_IN_ACTION); 
    myNotification.flags |= Notification.FLAG_AUTO_CANCEL; 
    myNotification.setLatestEventInfo(context, notificationTitle, notificationText, pendingIntent); 
    notificationManager.notify(MY_NOTIFICATION_ID, myNotification); 
} 
+3

ありがとうございました。 – stealthjong

+1

Googleがくれた最高のソリューション、ありがとう。 –

+0

前述のように、アンドロイドを追加することを忘れないでください:launchMode = "singleTop" –

0
Intent intent = new Intent(this, Notificationintent.class); 
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); 



    Notification noti = new Notification.Builder(this) 
    .setContentTitle("APP NOTIFICATION") 
    .setContentText(messageValue) 
    .setSmallIcon(R.drawable.ic_launcher) 
    .setStyle(new Notification.BigTextStyle() 
    .bigText(messageValue)) 
    .setContentIntent(pIntent).build(); 

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
// hide the notification after its selected 
noti.flags |= Notification.FLAG_AUTO_CANCEL; 

notificationManager.notify(0, noti); 
+0

ここでは、Notificationintentは別のアクティビティであり、messagevalueは文字列です。 –

4

これは私のために100%働い:メソッドでこのコード

場所を:

Intent intent = new Intent(this, YourClass.class); 
    intent.putExtra("NotiClick",true); 
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { 
     Notification Noti; 
     Noti = new Notification.Builder(this) 
       .setContentTitle("YourTitle") 
       .setContentText("YourDescription") 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentIntent(pIntent) 
       .setAutoCancel(true).build(); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

     notificationManager.notify(0, Noti); 
    } 

次に、onCreate/coあなたのクラスのnstructorはこれを行います:

if (savedInstanceState == null) { 
     Bundle extras = getIntent().getExtras(); 
     if(extras == null) 
     { 
      //Cry about not being clicked on 
     } 
     else if (extras.getBoolean("NotiClick")) 
     { 
      //Do your stuff here mate :) 
     } 

    }