2012-04-18 11 views
2

近接アラートが設定されています。 (追加されたクラッシュログ)すぐに通知が実行され、すぐにクラッシュします

近接警告が発生すると、通知が必要です。ユーザーが通知をクリックすると、新しいアクティビティ/フォームが読み込まれます。

今すぐ通知が実行され、アプリがクラッシュします。しかし、通知テキストは受信され、正常に表示されます。

誰かが私のコードに間違って通知を発したときにクラッシュする原因がありますか?

このコードは、近接警告/通知

public void SetupProximityAlerts(LocationManager lm, String name, String info, double latitude, double longitude, int range) 
{ 
    Intent intent = new Intent(PROX_ALERT_INTENT); 
    intent.putExtra("Name", name); 
    intent.putExtra("Info", info); 

    PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

    lm.addProximityAlert(latitude, longitude, range, -1, pi); 
    IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 

    registerReceiver(new MyBroadcastReceiver(), filter); 
} 

そして、ここでは、データが通知に表示するように設定します私BroadcastReceiverで設定します。実行時にアプリケーションがクラッシュする:nm.notify(0、n);

nm.notify(0、n)までのすべて;正常に実行されます。私はロギングでこれを確認しました。

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Bundle extras = intent.getExtras(); 

    String deal = (String) extras.get("Info"); 

    Intent notificationIntent = new Intent(context, ViewTarget.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); 

    NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

    Resources res = context.getResources(); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context); 
    builder.setContentIntent(contentIntent).setSmallIcon(R.drawable.icon).setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.icon)).setTicker(deal).setWhen(System.currentTimeMillis()).setAutoCancel(true).setContentTitle("Message") 
      .setContentText(deal); 
    Notification n = builder.getNotification(); 

    n.defaults |= Notification.DEFAULT_ALL; 

    nm.notify(0, n); 
} 
} 

そして、ここで私は、ユーザーがここに通知

public class ViewTarget extends ListActivity 
{ 

@Override 
public ListAdapter getListAdapter() 
{ 
    // TODO Auto-generated method stub 
    return super.getListAdapter(); 
} 

@Override 
public ListView getListView() 
{ 
    // TODO Auto-generated method stub 
    return super.getListView(); 
} 

@Override 
public void setListAdapter(ListAdapter adapter) 
{ 
    // TODO Auto-generated method stub 
    super.setListAdapter(adapter); 

} 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.locations); 
    Log.v("db", "Inside ViewTarget"); 
} 

} 

をクリックしたときにロードする活動は、クラッシュログは

04-17 21:53:52.407: E/AndroidRuntime(4717): FATAL EXCEPTION: main 
04-17 21:53:52.407: E/AndroidRuntime(4717): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.kjdv.gpsVegas.MyBroadcastReceiver (has extras) } in [email protected] 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:905) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.os.Handler.handleCallback(Handler.java:587) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.os.Looper.loop(Looper.java:123) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at dalvik.system.NativeStart.main(Native Method) 
04-17 21:53:52.407: E/AndroidRuntime(4717): Caused by: java.lang.SecurityException: Requires VIBRATE permission 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.os.Parcel.readException(Parcel.java:1247) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.os.Parcel.readException(Parcel.java:1235) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:274) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.app.NotificationManager.notify(NotificationManager.java:110) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.app.NotificationManager.notify(NotificationManager.java:90) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at com.kjdv.gpsVegas.MyBroadcastReceiver.onReceive(MyBroadcastReceiver.java:51) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892) 
04-17 21:53:52.407: E/AndroidRuntime(4717):  ... 9 more 

感謝です! ケビンは

+2

あなたがクラッシュログを投稿することができます追加するために必要な許可をバイブレーション機能をされて使用していることを示していますか? –

+0

が追加されました。ありがとうございます – Kevin

答えて

3

Caused by: java.lang.SecurityException: Requires VIBRATE permission

あなたが許可を忘れましたか?

+0

私はこの権限を追加しますが、これまでは同じ権限で以前に働いた通知があります。私は、通知をクリックした後でアクティビティを読み込む機能を追加しようとしているコードを壊しました。 – Kevin

+0

@Kevin Samが正しいです、あなたは許可を加えるべきです! –

+0

これは、クラッシュの問題を修正しました。すぐに話してはいけませんでした。ありがとうございました。 – Kevin

1
Caused by: java.lang.SecurityException: Requires VIBRATE permission 

あなたのクラッシュで上記の行は、あなたが以下のmanifeast file.Theに権限を追加youmust、その後

<uses-permission android:name="android.permission.VIBRATE" /> 
関連する問題