Работа уведомлений в эмуляторе, но не телефоне

Таким образом, это - простое приложение, которое получает два ввода текста от пользователя, и по щелчку кнопки оно создает уведомление. Вот код:

package com.dewey.notifymanager;

import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button button = (Button) findViewById(R.id.button1);
        final TextView texty = (TextView) findViewById(R.id.textView2);
        final EditText input = (EditText) findViewById(R.id.editText1);
        final EditText input2 = (EditText) findViewById(R.id.editText2);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                String notificationmessage = input.getText().toString();
                String notificationdetails = input2.getText().toString();
                texty.setText("Notification Created");
                displayNotification(notificationmessage, notificationdetails);
            }
        });
    }
    @Override
    protected void onStart() {

    super.onStart();


    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }



    public void displayNotification(String msg,String details)
    {
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher, msg, System.currentTimeMillis());




    notification.setLatestEventInfo(this, msg, details, null);
    int num = 0;
    manager.notify(num, notification);

    }

}

The app works on the emulator and displays the notification: emulator

Но когда я управляю им по телефону, уведомление не показывает по щелчку кнопки, и когда я управляю им по телефону бегущий Android 2.3 сбои приложения, и неожиданно останавливается по щелчку кнопки.

Вот logcat:

01-09 13:21:29.653: D/AndroidRuntime(981): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
01-09 13:21:29.653: D/AndroidRuntime(981): CheckJNI is ON
01-09 13:21:30.773: D/AndroidRuntime(981): Calling main entry com.android.commands.pm.Pm
01-09 13:21:30.832: D/AndroidRuntime(981): Shutting down VM
01-09 13:21:30.842: D/dalvikvm(981): GC_CONCURRENT freed 101K, 78% free 462K/2048K, paused 1ms+2ms
01-09 13:21:30.853: D/dalvikvm(981): Debugger has detached; object registry had 1 entries
01-09 13:21:30.872: I/AndroidRuntime(981): NOTE: attach of thread 'Binder Thread #3' failed
01-09 13:21:31.863: D/AndroidRuntime(994): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
01-09 13:21:31.863: D/AndroidRuntime(994): CheckJNI is ON
01-09 13:21:32.912: D/AndroidRuntime(994): Calling main entry com.android.commands.am.Am
01-09 13:21:32.952: I/ActivityManager(85): Force stopping package com.dewey.notifymanager uid=10040
01-09 13:21:32.952: I/Process(85): Sending signal. PID: 965 SIG: 9
01-09 13:21:32.973: I/ActivityManager(85):   Force finishing activity ActivityRecord{415d64e0 com.dewey.notifymanager/.MainActivity}
01-09 13:21:33.002: W/InputDispatcher(85): channel '4160dde0 com.dewey.notifymanager/com.dewey.notifymanager.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
01-09 13:21:33.002: E/InputDispatcher(85): channel '4160dde0 com.dewey.notifymanager/com.dewey.notifymanager.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
01-09 13:21:33.002: I/WindowManager(85): WIN DEATH: Window{4160dde0 com.dewey.notifymanager/com.dewey.notifymanager.MainActivity paused=true}
01-09 13:21:33.002: W/InputDispatcher(85): Attempted to unregister already unregistered input channel '4160dde0 com.dewey.notifymanager/com.dewey.notifymanager.MainActivity (server)'
01-09 13:21:33.092: I/WindowManager(85): WINDOW DIED Window{4160dde0 com.dewey.notifymanager/com.dewey.notifymanager.MainActivity paused=true}
01-09 13:21:33.092: I/ActivityManager(85): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.dewey.notifymanager/.MainActivity} from pid 994
01-09 13:21:33.103: W/WindowManager(85): Failure taking screenshot for (180x300) to layer 21045
01-09 13:21:33.193: D/AndroidRuntime(994): Shutting down VM
01-09 13:21:33.223: D/dalvikvm(1004): Not late-enabling CheckJNI (already on)
01-09 13:21:33.223: I/AndroidRuntime(994): NOTE: attach of thread 'Binder Thread #3' failed
01-09 13:21:33.223: D/dalvikvm(994): GC_CONCURRENT freed 102K, 77% free 485K/2048K, paused 1ms+1ms
01-09 13:21:33.223: D/jdwp(994): Got wake-up signal, bailing out of select
01-09 13:21:33.233: D/dalvikvm(994): Debugger has detached; object registry had 1 entries
01-09 13:21:33.263: I/ActivityManager(85): Start proc com.dewey.notifymanager for activity com.dewey.notifymanager/.MainActivity: pid=1004 uid=10040 gids={}
01-09 13:21:33.733: W/NetworkManagementSocketTagger(85): setKernelCountSet(10040, 1) failed with errno -2
01-09 13:21:34.023: W/ActivityThread(1004): Application com.dewey.notifymanager is waiting for the debugger on port 8100...
01-09 13:21:34.042: I/System.out(1004): Sending WAIT chunk
01-09 13:21:34.064: I/dalvikvm(1004): Debugger is active
01-09 13:21:34.242: I/System.out(1004): Debugger has connected
01-09 13:21:34.242: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:34.553: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:34.752: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:34.962: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:35.162: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:35.362: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:35.563: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:35.782: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:36.024: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:36.281: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:36.525: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:36.734: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:36.940: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:37.148: I/System.out(1004): waiting for debugger to settle...
01-09 13:21:37.357: I/System.out(1004): debugger has settled (1477)
01-09 13:21:39.322: D/dalvikvm(85): GREF has increased to 501
01-09 13:21:39.473: D/gralloc_goldfish(1004): Emulator without GPU emulation detected.
01-09 13:21:39.622: I/ActivityManager(85): Displayed com.dewey.notifymanager/.MainActivity: +6s463ms
01-09 13:21:40.053: W/NetworkManagementSocketTagger(85): setKernelCountSet(10004, 0) failed with errno -2
01-09 13:21:42.673: D/dalvikvm(85): GC_CONCURRENT freed 488K, 7% free 12839K/13767K, paused 8ms+50ms
01-09 13:21:42.862: D/dalvikvm(139): GC_CONCURRENT freed 408K, 34% free 11007K/16519K, paused 5ms+10ms
01-09 13:21:46.232: D/dalvikvm(139): GC_FOR_ALLOC freed 400K, 34% free 10990K/16519K, paused 316ms
01-09 13:21:51.422: D/PhoneStatusBar(139): panel: ACTION_DOWN at (191.000000, 2.000000) mDisabled=0x00000000
01-09 13:21:51.422: D/PhoneStatusBar(139): panel: beginning to track the user's touch, y=2 opening=true
01-09 13:21:53.452: D/PhoneStatusBar(139): panel: ACTION_UP at (277.000000, 168.000000) mDisabled=0x00000000
01-09 13:21:53.462: D/PhoneStatusBar(139): gesture: vraw=(48.303123,-210.310593) vnorm=(48.303123,-210.310593) vlinear=-215.786316
01-09 13:21:53.462: D/PhoneStatusBar(139): panel: will fling, y=204 vel=-215.78632
01-09 13:21:54.012: W/InputManagerService(85): Window already focused, ignoring focus gain of: [email protected]
01-09 13:21:54.412: I/ActivityManager(85): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 85
01-09 13:21:54.412: W/WindowManager(85): Failure taking screenshot for (180x300) to layer 21050
01-09 13:21:54.452: W/NetworkManagementSocketTagger(85): setKernelCountSet(10004, 1) failed with errno -2
01-09 13:21:55.842: W/InputManagerService(85): Starting input on non-focused client [email protected] (uid=10040 pid=1004)
01-09 13:21:55.882: W/IInputConnectionWrapper(1004): showStatusIcon on inactive InputConnection
01-09 13:21:56.974: W/NetworkManagementSocketTagger(85): setKernelCountSet(10040, 0) failed with errno -2

Действительно ли это - проблема с моей декларацией?:




    
        
            

            
        
    

2
nl ja de
пожалуйста, отправьте logcat
добавлено автор moDev, источник
пожалуйста, отправьте logcat
добавлено автор moDev, источник
@forgivegod я пытался изменить свой код согласно руководству, но этому doesn' t работают также.
добавлено автор turnt, источник
@forgivegod я пытался изменить свой код согласно руководству, но этому doesn' t работают также.
добавлено автор turnt, источник
Мой эмулятор андроида 4.1, мой телефон 2.3.5
добавлено автор turnt, источник
это работает отлично над эмулятором, но когда я устанавливаю apk по своему телефону это doesn' t работа, но катастрофы
добавлено автор turnt, источник
это работает отлично над эмулятором, но когда я устанавливаю apk по своему телефону это doesn' t работа, но катастрофы
добавлено автор turnt, источник
setLatestInfo удерживался от использования в API 11 , если вы хотите сделать прекрасные уведомления, которые работают через проверку версии ОС андроида это руководство
добавлено автор petey, источник
setLatestInfo удерживался от использования в API 11 , если вы хотите сделать прекрасные уведомления, которые работают через проверку версии ОС андроида это руководство
добавлено автор petey, источник
какова катастрофа stacktrace (проверьте logcat),
добавлено автор petey, источник
можно ли объявить о большем количестве регистрации (определенно катастрофа). то, что вы имеете, не указывает на то, что пошло не так, как надо.
добавлено автор petey, источник
можно ли объявить о большем количестве регистрации (определенно катастрофа). то, что вы имеете, не указывает на то, что пошло не так, как надо.
добавлено автор petey, источник
какова катастрофа stacktrace (проверьте logcat),
добавлено автор petey, источник
но если некоторые методы удержали от использования в api 11, это wouldn' t терпят крах на api 10, правильно? итак, почему это потерпело крах на 2.3?
добавлено автор Zyoo, источник
но если некоторые методы удержали от использования в api 11, это wouldn' t терпят крах на api 10, правильно? итак, почему это потерпело крах на 2.3?
добавлено автор Zyoo, источник
what' s версия ОС эмулятора?
добавлено автор Zyoo, источник
what' s версия ОС эмулятора?
добавлено автор Zyoo, источник
можно ли отправить displayNotification (...) кодируют?
добавлено автор drulabs, источник
можно ли отправить displayNotification (...) кодируют?
добавлено автор drulabs, источник
проверьте свою версию телефона и эмулятора
добавлено автор nayab, источник
проверьте свою версию телефона и эмулятора
добавлено автор nayab, источник

2 ответы

Ваше Заявление должно установить PendingIntent, который требуется setLatestEventInfo (). Поэтому замените:

notification.setLatestEventInfo(this, msg, details, null);

с

Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this, msg, details, pendingIntent);

Это подаст вашу Заявку работать, хотя, кроме того, я сильно рекомендую вам distiguate между Apilevels. Ваше Заявление могло бы быть похожим на это:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button button = (Button) findViewById(R.id.button1);
        final TextView texty = (TextView) findViewById(R.id.textView2);
        final EditText input = (EditText) findViewById(R.id.editText1);
        final EditText input2 = (EditText) findViewById(R.id.editText2);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                String notificationmessage = input.getText().toString();
                String notificationdetails = input2.getText().toString();
                texty.setText("Notification Created");
                displayNotification(notificationmessage, notificationdetails);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    /**
     * Show a notification while this service is running.
     * 
     */
    private void displayNotification(String msg, String details) {
        int num = 0;
        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                intent, 0);
        int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion <= 8) {
            manager.notify(num,
                    createNotificationApi8(msg, details, pendingIntent));
        } else {
            manager.notify(num,
                    createNotificationApi14(msg, details, pendingIntent));
        }
    }

    @TargetApi(value = 14)
    private Notification createNotificationApi14(String msg, String details,
            PendingIntent intent) {
        Notification.Builder builder = new Builder(getApplicationContext());
        builder.setSmallIcon(R.drawable.ic_launcher);
        builder.setContentTitle(msg);
        builder.setContentIntent(intent);
        builder.setContentInfo(details);
        Notification notification = builder.getNotification();
        return notification;
    }

    @TargetApi(value = 8)
    private Notification createNotificationApi8(String msg, String details,
            PendingIntent intent) {
        Notification notification = new Notification(R.drawable.ic_launcher,
                msg, System.currentTimeMillis());
        notification.setLatestEventInfo(this, msg, details, intent);
        return notification;
    }
}

Я надеюсь, что это помогает вам, еще, пожалуйста, сообщите мне. Andac

2
добавлено
Много благодарит, я понимаю, что проблема связана с уровнями API. Приложение работает над моей Связью, которая работает на уровне API 14. Спасибо
добавлено автор turnt, источник
Мое удовольствие:) Пример выше может быть далее увеличен, с тех пор "builder.getNotification ()" также удерживается от использования начиная с API lvl 16. Google изменил API много относительно Уведомлений в последних выпусках.
добавлено автор AndacAydin, источник

Ваше Заявление должно установить PendingIntent, который требуется setLatestEventInfo (). Поэтому замените:

notification.setLatestEventInfo(this, msg, details, null);

с

Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this, msg, details, pendingIntent);

Это подаст вашу Заявку работать, хотя, кроме того, я сильно рекомендую вам distiguate между Apilevels. Ваше Заявление могло бы быть похожим на это:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button button = (Button) findViewById(R.id.button1);
        final TextView texty = (TextView) findViewById(R.id.textView2);
        final EditText input = (EditText) findViewById(R.id.editText1);
        final EditText input2 = (EditText) findViewById(R.id.editText2);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                String notificationmessage = input.getText().toString();
                String notificationdetails = input2.getText().toString();
                texty.setText("Notification Created");
                displayNotification(notificationmessage, notificationdetails);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    /**
     * Show a notification while this service is running.
     * 
     */
    private void displayNotification(String msg, String details) {
        int num = 0;
        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                intent, 0);
        int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        if (currentapiVersion <= 8) {
            manager.notify(num,
                    createNotificationApi8(msg, details, pendingIntent));
        } else {
            manager.notify(num,
                    createNotificationApi14(msg, details, pendingIntent));
        }
    }

    @TargetApi(value = 14)
    private Notification createNotificationApi14(String msg, String details,
            PendingIntent intent) {
        Notification.Builder builder = new Builder(getApplicationContext());
        builder.setSmallIcon(R.drawable.ic_launcher);
        builder.setContentTitle(msg);
        builder.setContentIntent(intent);
        builder.setContentInfo(details);
        Notification notification = builder.getNotification();
        return notification;
    }

    @TargetApi(value = 8)
    private Notification createNotificationApi8(String msg, String details,
            PendingIntent intent) {
        Notification notification = new Notification(R.drawable.ic_launcher,
                msg, System.currentTimeMillis());
        notification.setLatestEventInfo(this, msg, details, intent);
        return notification;
    }
}

Я надеюсь, что это помогает вам, еще, пожалуйста, сообщите мне. Andac

2
добавлено
Много благодарит, я понимаю, что проблема связана с уровнями API. Приложение работает над моей Связью, которая работает на уровне API 14. Спасибо
добавлено автор turnt, источник
Мое удовольствие:) Пример выше может быть далее увеличен, с тех пор "builder.getNotification ()" также удерживается от использования начиная с API lvl 16. Google изменил API много относительно Уведомлений в последних выпусках.
добавлено автор AndacAydin, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)