2
2slow4you
Gast
Guten Tach,
ich hätte da mal ´ne Frage zu meinem aktuellen Problem: ich bin dabei, eine App zu entwickeln, die einen Alarm mit dem AlarmManager setzt, und am Ende soll eine Notification gesendet werden. Mit einem Toast funktioniert das alles, doch wenn ich eine Notification senden will, bekomme ich diese Fehlermeldung:
Wenn ich das richtig verstanden habe, hängt es daran, dass der AlarmReciever nicht gestartet werden kann, aufgrund einer NullPointerException. Ich weiß aber nicht, wo diese sein soll, da mit dem Toast ja alles klappt...
Hier ist einmal der Code, der den AlarmReciever startet:
Und hier der Code, der anschließend in der AlarmReciever.class ausgeführt werden soll:
Und hier die Notification Methode:
Weiß jemand, wo mein Problem liegt?
Vielen Dank schonmal!
ich hätte da mal ´ne Frage zu meinem aktuellen Problem: ich bin dabei, eine App zu entwickeln, die einen Alarm mit dem AlarmManager setzt, und am Ende soll eine Notification gesendet werden. Mit einem Toast funktioniert das alles, doch wenn ich eine Notification senden will, bekomme ich diese Fehlermeldung:
Code:
03-13 17:03:36.633: E/AndroidRuntime(12854): FATAL EXCEPTION: main
03-13 17:03:36.633: E/AndroidRuntime(12854): Process: de.nico.gpt, PID: 12854
03-13 17:03:36.633: E/AndroidRuntime(12854): java.lang.RuntimeException: Unable to start receiver de.nico.gpt.AlarmReciever: java.lang.NullPointerException
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2426)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.app.ActivityThread.access$1700(ActivityThread.java:135)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.os.Handler.dispatchMessage(Handler.java:102)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.os.Looper.loop(Looper.java:136)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-13 17:03:36.633: E/AndroidRuntime(12854): at java.lang.reflect.Method.invokeNative(Native Method)
03-13 17:03:36.633: E/AndroidRuntime(12854): at java.lang.reflect.Method.invoke(Method.java:515)
03-13 17:03:36.633: E/AndroidRuntime(12854): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-13 17:03:36.633: E/AndroidRuntime(12854): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-13 17:03:36.633: E/AndroidRuntime(12854): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
03-13 17:03:36.633: E/AndroidRuntime(12854): at dalvik.system.NativeStart.main(Native Method)
03-13 17:03:36.633: E/AndroidRuntime(12854): Caused by: java.lang.NullPointerException
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.content.ComponentName.<init>(ComponentName.java:77)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.content.Intent.<init>(Intent.java:3813)
03-13 17:03:36.633: E/AndroidRuntime(12854): at de.nico.gpt.MainGameActivity.Notification(MainGameActivity.java:1117)
03-13 17:03:36.633: E/AndroidRuntime(12854): at de.nico.gpt.AlarmReciever.onReceive(AlarmReciever.java:15)
03-13 17:03:36.633: E/AndroidRuntime(12854): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2419)
03-13 17:03:36.633: E/AndroidRuntime(12854): ... 11 more
Hier ist einmal der Code, der den AlarmReciever startet:
Code:
newtime = new GregorianCalendar().getTimeInMillis() + newtime;
Intent intentAlarm = new Intent(this, AlarmReciever.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Code:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import de.nico.test.MainGameActivity;
public class AlarmReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
MainGameActivity n = new MainGameActivity();
n.Notification("Test", "Does it works?");
//Toast.makeText(context, "Test" + "Test", Toast.LENGTH_LONG).show();
}
}
Code:
public void Notification(String notificationTitle, String notificationMessage) {
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSound(soundUri)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(notificationTitle)
.setContentText(notificationMessage);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, MainGameActivity.class);
// The stack builder object will contain an artificial back stack for the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(MainGameActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// ranint allows you to update the notification later on.
ranint = ranint + 1;
mNotificationManager.notify(ranint, mBuilder.build());
}
Vielen Dank schonmal!