Как передать идентификатор изображения в службу сигнализации? - PullRequest
0 голосов
/ 29 сентября 2011

Я использую сигнализацию для запуска уведомлений. Я хочу иметь другое изображение в уведомлении в зависимости от того, какой pendingIntent его вызвал. Я пытался передать этот идентификатор через намерение, но приложение вылетает

        Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class);
        //pass something to intent
        myIntent.putExtra("param", 999);

        pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);

А в классе обслуживания ловлю его через

int test =  intent.getExtras().getInt("param", -1);
Toast.makeText(this, test, Toast.LENGTH_SHORT).show();//the app crashes here!

Однако приложение вылетает в отмеченной строке.

Как мне передать идентификатор изображения в сервис, чтобы я мог использовать этот идентификатор для установки изображения в нормативах?

EDIT

Вот logcat, когда происходит ошибка

09-29 12:04:45.087: ERROR/AndroidRuntime(12973): FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start service com.exercise.AndroidAlarmService.MyAlarmService@2f9768a0 with Intent { flg=0x4 cmp=com.exercise.AndroidAlarmService/.MyAlarmService (has extras) }: android.content.res.Resources$NotFoundException: String resource ID #0x3e7
        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3063)
        at android.app.ActivityThread.access$3600(ActivityThread.java:125)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4627)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x3e7
        at android.content.res.Resources.getText(Resources.java:208)
        at android.widget.Toast.makeText(Toast.java:258)
        at com.exercise.AndroidAlarmService.MyAlarmService.onStart(MyAlarmService.java:53)
        at android.app.Service.onStartCommand(Service.java:420)
        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3053)
        ... 10 more

1 Ответ

0 голосов
/ 29 сентября 2011
Toast.makeText(this, test, Toast.LENGTH_SHORT).show();//the app crashes here!

Означает, что вы отправляете int как сообщение.Это, в свою очередь, означает, что вы говорите Android искать строку с идентификатором ресурса 999. Измените его на:

Toast.makeText(this, String.valueOf(test), Toast.LENGTH_SHORT).show();//the app won't crash here
...