0

特定の関心のあるポイントに近づくたびに近接アラートを起動するアプリを作成しています(mysql dbからpoiを読み取ります)。BroadcastReceiver がインテントを取得すると、通知が作成され、すべてが正常に機能します。通知をクリックすると、アクティビティを開始したいので、これを行うには、いくつかのパラメーター (基本的には文字列) をブロードキャスト レシーバーに送信して、開始したいアクティビティにこのパラメーターを渡すことができるようにする必要があります。問題は、これらのパラメーターをインテントを介してブロードキャスト レシーバーに渡そうとすると、次のエラーが発生することです。

この方法でパラメーターを送信しました。

 private void addProximityAlert(Annuncio a){
   double latitudine = a.lat; 
   double longitudine = a.lon; 
   Intent intent = new Intent(PROX_ALERT_INTENT);
   intent.putExtra("nome", nome); 
   PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent,0);
   locationManager.addProximityAlert(latitudine, longitudine, RAGGIO, ALERT_EXPIRATION, pi); 
   IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 
   registerReceiver(new ProximityIntentReceiver(),filter);
}

これは受信機です:

public class ProximityIntentReceiver extends BroadcastReceiver{  
   public void onReceive(Context context, Intent intent){
       String nome = intent.getExtras().getString("nome");
       Log.v("nome", nome);


   } 
}

私は何が欠けていますか?

06-29 22:42:46.103: E/AndroidRuntime(3723): FATAL EXCEPTION: main
06-29 22:42:46.103: E/AndroidRuntime(3723): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.carmen.progettosmp.PROXIMITY_ALERT flg=0x10 (has extras) } in com.carmen.progettosmp.ProximityIntentReceiver@427a2f58
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:795)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.os.Handler.handleCallback(Handler.java:615)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.os.Looper.loop(Looper.java:153)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.app.ActivityThread.main(ActivityThread.java:4987)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at java.lang.reflect.Method.invokeNative(Native Method)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at java.lang.reflect.Method.invoke(Method.java:511)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at dalvik.system.NativeStart.main(Native Method)
06-29 22:42:46.103: E/AndroidRuntime(3723): Caused by: java.lang.NullPointerException: println needs a message
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.util.Log.println_native(Native Method)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.util.Log.v(Log.java:117)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at com.carmen.progettosmp.ProximityIntentReceiver.onReceive(ProximityIntentReceiver.java:29)
06-29 22:42:46.103: E/AndroidRuntime(3723):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:785)
06-29 22:42:46.103: E/AndroidRuntime(3723):     ... 9 more
4

1 に答える 1

0

通知を作成する場合は、インテントを保持する PendingIntent を作成する必要があります。そのインテントでそれらのエクストラを設定できませんか?. また、ジオフェンシング API の恩恵を受けるかもしれません。もう 1 つ、文字列 "ciao" をキーとして探しているのですが、キー ネームを探すべきではありませんか?

于 2013-06-29T19:04:17.730 に答える