近接アラートが設定されています。 (追加されたクラッシュログ)すぐに通知が実行され、すぐにクラッシュします
近接警告が発生すると、通知が必要です。ユーザーが通知をクリックすると、新しいアクティビティ/フォームが読み込まれます。
今すぐ通知が実行され、アプリがクラッシュします。しかし、通知テキストは受信され、正常に表示されます。
誰かが私のコードに間違って通知を発したときにクラッシュする原因がありますか?
このコードは、近接警告/通知
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
感謝です! ケビンは
あなたがクラッシュログを投稿することができます追加するために必要な許可をバイブレーション機能をされて使用していることを示していますか? –
が追加されました。ありがとうございます – Kevin