2017-02-01 10 views
8

Nie jestem programistą dla Androida, ale muszę zrobić aplikację, więc skoro znam jakiś HTML/JavaScript/CSS zdecydowałem się użyć PhoneGap (Cordova). Używam wtyczki o nazwie menedżer pobierania (github), która pobiera pliki i wyświetla powiadomienie o postępie. Wszystko działa, ale gdy kliknę powiadomienie, chcę przywrócić mnie do głównej aktywności mojej aplikacji, ale tak się nie dzieje.Powiadomienie Cordova plugin (java) nie trafia do aplikacji - Android

This plik jest odpowiedzialny za pobranie i powiadomienia zaangażowany kod jest poniżej:

intent = new Intent(); 
intent.putExtra("cancel_download", 1); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
pend = PendingIntent.getActivity(cordova.getActivity(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

mNotifyManager = (NotificationManager) cordova.getActivity().getSystemService(Activity.NOTIFICATION_SERVICE); 
mBuilder = new NotificationCompat.Builder(cordova.getActivity()) 
    .setSmallIcon(android.R.drawable.stat_sys_download) 
    .setContentTitle(notificationTitle) 
    /*.setSubText("Tap to CANCEL")*/ 
    .setTicker(ticker) 
    .setContentIntent(pend) 
    .setContentText("0% - " + fileName); 

mNotificationId = new Random().nextInt(10000); 
... 

... 
//While(downloading) 
if(useNotificationBar) { 
    mBuilder.setProgress(100, newProgress, false); 
    mBuilder.setContentText(step + "% - " + fileName); 
    mBuilder.setContentIntent(pend); 
    mNotifyManager.notify(mNotificationId, mBuilder.build()); 
} 

Nie mogę pracować po kliknięciu nic powiadomienie dzieje. Co jest nie tak? Przepraszam, za słaby angielski.

Odpowiedz

4

Zmień

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

do

pend = PendingIntent.getActivity(cordova.getActivity(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); 

Nadzieja to działa.

0

Spróbuj tego:

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
         | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

       PendingIntent intent = PendingIntent.getActivity(context, 0, 
         notificationIntent, 0); 

zastąpić go ze zmiennych. Mam nadzieję, że działa

0

Wygląda na to, że autor biblioteki chciał kliknąć na powiadomienie, aby anulować pobieranie. W każdym razie oryginalna intencja opakowana w PendingIntent nie określa działania do uruchomienia.

należy zmienić:

intent = new Intent(); 
intent.putExtra("cancel_download", 1); 
intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); 

do:

intent = new Intent(); 
intent.setComponent(cordova.getActivity.getComponentName()); 
intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);