2011-10-23 10 views
6

私はBroadcastReceiverを拡張するクラスを持っています。これは新しいWifiスキャン結果が利用可能なときに呼び出されます(受信者はIntent-FilterとしてScan_Resultsブロードキャストでマニフェストに登録されます)。BroadcastReceiverからのAndroidの表示通知

このクラスから、私はユーザーに通知を表示できるようにします。現在、ブロードキャストインテントクラスのonReceiveメソッドのパラメータとして受け取ったコンテキストを別のクラスの「show notification」メソッドに渡します。

それがラインになると:

myNotificationManager.notify(notificationId, notification); 

それが次の例外で失敗します

java.lang.IllegalArgumentException: contentView required: pkg=com.mumfordmedia.trackify id=2131034122 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0) 

任意のアイデアは、なぜこれが起こっているのでしょうか?私が考えることができるのは、私がonReceiveパラメータから得ている文脈が、「仕事のための正しい」フレーズがないためではないからです...

アイデアはありますか?ありがとうございます。

+1

は、おそらくこれはhttp://stackoverflow.com/questions/2826786/pendingintents-in-notifications役立ちます。とにかく、より多くのコードを表示してください。 – Jong

+2

あなたのコードをさらに表示して、何が起こっているのかをより良く知ることができます。 –

+0

ところで、ようこそStackoverflowへ!あなたの回答が役に立ったら、それを投票してください。回答の回答がうまくいく場合は、その隣の緑色のチェックマークをクリックして回答を受け入れてください。 –

答えて

0

通知マネージャーに渡す通知を作成するときは、表示するコンテンツビューを提供していません。実際に通知を作成する行を確認して、実際に通知を表示するかどうかを確認してください。

+0

通知スクリプトは、動作するアプリ内の他の場所からコピーして貼り付けました。レイアウトのないBroadcastReceiverを拡張するクラスからアクティブ化されているため、利用可能なコンテンツビューはありません。コンテンツビューが必要なのはなぜですか?私は数時間でドキュメントを見直します...返信btw –

2

それは前に働いたが、ここで私はそれが働いてしまったコードである波平理由を正確にわからない:

は、任意の方法の以下の外を宣言します。

int YOURAPP_NOTIFICATION_ID = 1234567890; 
NotificationManager mNotificationManager; 

はその後onReceive方法で次のように呼び出します:

mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
showNotification(context, R.drawable.icon, "short", false); 

は、次に、以下の方法を宣言する

+0

このコードは私のために実行してくれてありがとう。ありがとう:) – IRvanFauziE

2

あなたはNotification.setLatestEventInfo()を呼び出す必要があります。

1

使用あなたの通知

Intent intent = new Intent(this, MusicDroid.class); 
PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); 
notification.setLatestEventInfo(this, "This is the title", 
    "This is the text", activity); 
notification.number += 1; 

nm.notify(NOTIFY_ID, notification); 
14

ContentViewと一緒に、このコードは、通知をクリックしたときに必要とされる図です。以下のコードは正常に動作し、setLatestEventInfo()が必要です。

NotificationCompatを使用している人のために
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.ic_launcher, 
      "Hello from service", System.currentTimeMillis()); 
    Intent intent = new Intent(this, MainActivity.class); 
    notification.setLatestEventInfo(this, "contentTitle", "contentText", 
      PendingIntent.getActivity(this, 1, intent, 0)); 
    manager.notify(111, notification); 
+1

+1:setLatestEventInfo()を使用すると、エラーが消えます。このような単純な通知を表示するには、どれくらいのコード行が表示されるのか少し面倒です... – ArtOfWarfare

0

、次のコードは動作します:

NotificationCompat.Builder n = new NotificationCompat.Builder(this) 
    .setSmallIcon(R.drawable.icon).setContentText("Notify Title").setContentText("Sample Text"); 
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Intent i = new Intent(this,MainActivity.class); 
    PendingIntent ac = PendingIntent.getActivity(this, 0, i, 0); 
    n.setContentIntent(ac); 
    nm.notify(12222, n.build()); 
関連する問題