NotificationManager si blocca solo sul dispositivo

Ho un problema che non posso spiegare. Ho un'attività principale che contiene un button. Quando si fa clic su questo button, lancia una nuova attività che scarica un file xml da Internet. Durante il download c'è una notifica che indica il progresso di download.

Questo funziona perfettamente nel mio AVD (livello API 17). Ma, quando cerco di fare la stessa cosa nel mio dispositivo (GT-I1900 con API level 10, android versione 2.3.3) si blocca.

  • Android ViewFlipper non lancia
  • Come impostare il text in un text EditText
  • Vantaggio di ListFragment su un elenco di ListView o di un normale frammento
  • Video Frame da Frame che cerca
  • Cattura PNG2 di Camera2
  • Cosa funziona com.firebase.client.ServerValue.TIMESTAMP con?
  • Penso che il problema esista con il notificationBuilder che utilizzo.

     Context context = getApplicationContext(); notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationBuilder = new NotificationCompat.Builder(this); notificationBuilder.setContentTitle("Download Progress").setContentText("Downloading").setSmallIcon(android.R.drawable.stat_sys_download); 

     notificationManager.notify(0, notificationBuilder.build()); 

    Per il download utilizzo una class DownloadFilesTask (estende la class AsyncTask) che ho testato e funziona bene.

    Ecco il registro delle eccezioni:

      at android.app.NotificationManager.notify(NotificationManager.java:91) 

    Quindi la mia domanda è: se il problema esiste con il livello API del mio dispositivo, chiunque può spiegare come utilizzare constructor di notifica per API inferiori.

    Ecco il log completo:

     02-01 23:06:28.862: E/AndroidRuntime(16860): FATAL EXCEPTION: AsyncTask #1 02-01 23:06:28.862: E/AndroidRuntime(16860): java.lang.RuntimeException: An error occured while executing doInBackground() 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.AsyncTask$3.done(AsyncTask.java:200) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.lang.Thread.run(Thread.java:1019) 02-01 23:06:28.862: E/AndroidRuntime(16860): Caused by: java.lang.IllegalArgumentException: contentIntent required: pkg=com.bakoproductions.easybet id=0 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0) 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.Parcel.readException(Parcel.java:1326) 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.Parcel.readException(Parcel.java:1276) 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:322) 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.app.NotificationManager.notify(NotificationManager.java:111) 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.app.NotificationManager.notify(NotificationManager.java:91) 02-01 23:06:28.862: E/AndroidRuntime(16860): at com.bakoproductions.easybet.XMLParser.downloadXML(XMLParser.java:83) 02-01 23:06:28.862: E/AndroidRuntime(16860): at com.bakoproductions.easybet.DownloadFilesTask.doInBackground(DownloadFilesTask.java:24) 02-01 23:06:28.862: E/AndroidRuntime(16860): at com.bakoproductions.easybet.DownloadFilesTask.doInBackground(DownloadFilesTask.java:1) 02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.AsyncTask$2.call(AsyncTask.java:185) 02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 02-01 23:06:28.862: E/AndroidRuntime(16860): ... 4 more 

    One Solution collect form web for “NotificationManager si blocca solo sul dispositivo”

    Nelle versioni precedenti Android, la tua Notification deve avere un intento dei contenuti, in modo che quando l'utente fa clic sulla notifica, succede qualcosa . Ciò significa che è necessario:

    Crea un object Intent , indicando un punto, come ad esempio il tuo MainActivity . Assicurati di aggiungere la bandiera Intent.FLAG_ACTIVITY_NEW_TASK .

     Intent intent = new Intent (this, MainActivity.class); intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); 

    Convertire in un PendingIntent

     PendingIntent pend = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Infine, nel constructor, chiamata

     notificationBuilder.setContentIntent (pend); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.