Я пишу приложение, имеющее minSdkVersion = 9
и maxSdkVersion = 21
. В service
Я написал код для отправки уведомления, пользователь будет уведомлен, когда заданное время соответствует текущему времени.Отправка уведомления не работает
Однако, он уведомляет меня прекрасно, если я запустить его в эмуляторе, имеющий API = 19, но если я бегу в моем устройстве, имеющем API = 10 он не уведомляет меня и врезается приложение.
Я использую Android-Studio в Ubuntu, он не обеспечивает функцию отладки устройства. Поэтому я даже не вижу logcat
.
Вот мой соответствующий код
@Override
public int onStartCommand(Intent intent, int flags, int startId){
// Intent alarmIntent = new Intent(getBaseContext(), TRAlarmScreen.class);
// alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// alarmIntent.putExtras(intent);
// getApplication().startActivity(alarmIntent); */
Bundle extras = intent.getExtras();
int id = extras.getInt("id");
String title = extras.getString("title");
String des = extras.getString("des");
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle(title);
mBuilder.setContentText(des);
mBuilder.setTicker("New Message Alert!");
mBuilder.setSmallIcon(R.drawable.tr);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(id, mBuilder.build());
return START_STICKY;
}
В чем проблема? Нужно ли добавлять какую-либо библиотеку поддержки или что-то, чтобы она работала на более низких уровнях API?
Ошибка
java.lang.IllegalArgumentException: contentIntent требуется: упак = com.android.saathi ID = 1 уведомление = Уведомление (вибрирует = нуль, звук = нуль, по умолчанию = 0x0, флаги = 0x0)
logcat
Мои во время работы в устройстве, имеющем апи 10
02-27 02:27:41.812 4760-4760/com.android.saathi E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start service [email protected] with Intent { flg=0x4 cmp=com.android.saathi/.TRService (has extras) }: java.lang.IllegalArgumentException: contentIntent required: pkg=com.android.saathi id=1 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2372)
at android.app.ActivityThread.access$2800(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1111)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: contentIntent required: pkg=com.android.saathi id=1 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0)
at android.os.Parcel.readException(Parcel.java:1326)
at android.os.Parcel.readException(Parcel.java:1276)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:394)
at android.app.NotificationManager.notify(NotificationManager.java:111)
at android.app.NotificationManager.notify(NotificationManager.java:91)
at com.android.saathi.TRService.onStartCommand(TRService.java:42)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2355)
at android.app.ActivityThread.access$2800(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1111)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
«не уведомлять меня и врезается приложение» - то посмотрите на трассировка стека Java в LogCat. «Я использую Android-Studio в Ubuntu, он не предоставляет функцию отладки устройства» - ** Я использую Android Studio в Ubuntu, и это, безусловно, ** делает ** «предоставляет функцию отладки устройства». – CommonsWare
Вы используете опции разработчика? Запустите приложение на эмуляторе и откройте окно Logcat в своем идее –
@CommonsWare в 'android sdk manager -> extras', в котором показано, что' google usb driver' 'не совместим с linux'. Поэтому я не могу работать непосредственно в устройстве. И сэр, если ubuntu позволяет отлаживать, не могли бы вы рассказать мне, как я могу это сделать? – user4583520