0

我有通知,並且在點擊通知時應該使用intent來放置值。此值應在其他Activity的BroadcastReceiver中接收。任何幫助如何解決?下面有我的代碼:如何把通知中的額外使用意圖通知BroadCast

public void showNotification(){ 
     Intent intent = new Intent(MainActivity.ACTION_NEW_MSG); 
     intent.putExtra(MainActivity.MSG_FIELD, "TEST VALUES"); 
     intent.setAction(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
     ComponentName cn = new ComponentName(getApplicationContext(), MainActivity.class); 
     intent.setComponent(cn); 
     sendBroadcast(intent); 
     contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); 


    notification = new NotificationCompat.Builder(getApplicationContext()) 
        .setCategory(Notification.CATEGORY_PROMO) 
        .setContentTitle("TEST VALUE") 
        .setContentText("Please click for") 
        .setSmallIcon(R.drawable.ic_launcher) 
        .setAutoCancel(false) 
        .setVisibility(1) 
        .setSubText("Time left: " + millisUntilFinished/1000) 
        .addAction(android.R.drawable.ic_menu_view, "View details", contentIntent) 
        .setContentIntent(contentIntent) 
        .setPriority(Notification.PRIORITY_HIGH) 
        .setVibrate(new long[]{0}).build(); 
      notificationManager = 
        (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
      int notification_id = 666; 
      notificationManager.notify(notification_id, notification); 
     } 

及以下MainActivity:

private void initReceiver() { 
    myReceiver = new MyReceiver(); 
    IntentFilter filter = new IntentFilter(ACTION_NEW_MSG); 
    registerReceiver(myReceiver, filter); 
} 

public class MyReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(ACTION_NEW_MSG)) { 
      String message = intent.getStringExtra(MSG_FIELD); 
      Toast.makeText(getApplicationContext(),message, Toast.LENGTH_LONG).show(); 
      Log.e("TESTING", "TESTING"); 
     } 
    } 
} 
+1

你使用當前代碼得到了什麼問題? –

+0

我的問題是,我看不到任何吐司,或日誌。在我看來,向Intent提供額外數據存在問題。 – user5523912

回答

0

你爲什麼不使用一個服務,而不是一個reciever的?你可以像這樣創建意圖:Intent i = new Intent(MainActivity.this, MyService.class); 你可以把意外和行動。 在服務類中,只是覆蓋此功能:

@Override 
    public int onStartCommand(Intent intent, int flags, int startId){ 
     if (intent != null) { 
      final String action = intent.getAction(); 
     } 
    }