2016-01-27 46 views
0

我想從BroadcastReceiver發出一個通知。我在我的活動中使用了這段代碼,它工作正常,但我無法從BroadcastReceiver發出通知。你能幫我解決這個問題:android - 爲什麼這段代碼沒有在BroadcastReceiver中發出通知

Random rd;rd= new Random(); 
      NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); 
      Intent notificationIntent = new Intent(Intent.ACTION_VIEW); 
      notificationIntent.setData(Uri.parse(link)); 
      PendingIntent pending=null; 
      pending = PendingIntent.getActivity(ctx, 0, notificationIntent, pending.FLAG_UPDATE_CURRENT); 

      Notification myNotification = new NotificationCompat.Builder(ctx) 
        .setSmallIcon(R.drawable.ic_launcher).setAutoCancel(false).setLargeIcon(remote_picture) 
        .setContentTitle(onvan).setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
        .setContentText(msg).setContentIntent(pending).build(); 
      notificationManager.notify(rd.nextInt(75), myNotification); 

的問題是,這個代碼不作通知,沒有通知顯示在托盤。正如我說的,我在跑這個活動代碼和它的作品找到但在廣播接收器它沒有任何通知

+1

請解釋什麼是「我不能從BroadcastReceiver發出通知「的意思。 – CommonsWare

+0

問題不清楚;通知沒有問題,通知管理員會收到通知。在通知托盤中應該有一個通知等着你。由於您始終使用相同的ID,因此每個通知都會覆蓋通知托盤中的同一個ID。 – Shark

+0

@Shark感謝您的回覆,我只是更新我的代碼併爲通知ID添加了一個隨機數,但它並未在紙盤中顯示任何通知。 –

回答

-1

要執行內部廣播接收器的代碼,你必須調用sendBroadcast()方法或設置一些動作在你的清單文件一樣

<receiver android:name="Your package name.ReceiverName"> 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    //set your action here 
</intent-filter> 
</receiver> 
+0

您確實需要AndroidManifest中的'',但這也不是正確的方法。 您需要' '來接收GCM推送通知。 – Shark

+0

@Shark。在donald draper的問題中,並沒有提到有關GCM推送通知的任何信息。看起來他只是試圖從廣播接收器發送通知。 – suvarna

+0

真的,對不起,這是我錯誤的推定。但是在編輯答案之前我無法刪除downvote。 – Shark

相關問題