5

Mam kod, a to po prostu nie działa, więc proszę każdego, aby mi pomógł. Niewiele jest informacji na temat tej konkretnej sprawy.Dlaczego Android ignoruje tworzenie powiadomienia?

główną działalność


public class MainActivity extends Activity { 
public final int PENDING_INTENT_ID = 8; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button clickity = (Button)findViewById(R.id.alarm_button); 
    clickity.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Calendar now = Calendar.getInstance(); 
      now.add(Calendar.SECOND, 20); 

      //Create a new PendingIntent used by the Alarm when it activates 
      Intent intent = new Intent(v.getContext(), AlarmReciever.class); 
      intent.setAction("SOME_AWESOME_TRIGGER_WORD"); 
      intent.putExtra("info", "This String shows that the info is actually sent correctly"); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(v.getContext(), PENDING_INTENT_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT|Intent.FILL_IN_DATA); 

      //Then Create the alarm manager to send this pending intent and set the date to go off 
      AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE); 
      am.set(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntent); 

     } 
    }); 

} 

AlarmReciever (Aware ja orkisz to źle, ale ponieważ to jak to jest, im będzie z nim)


public class AlarmReciever extends BroadcastReceiver{ 

@Override 
public void onReceive(Context c, Intent arg1) { 

    //get a reference to NotificationManager 
    String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) c.getSystemService(ns); 

    //Instantiate the notification 

    CharSequence tickerText = "Hello"; 
    long when = System.currentTimeMillis(); 
    Notification.Builder builder = new Notification.Builder(c) 
           .setTicker(tickerText) 
           .setWhen(when) 
           .setContentTitle(arg1.getStringExtra("info")) 
           .setContentText("Success!!") 
           .setAutoCancel(true); 
    Notification notification = builder.getNotification(); 
    mNotificationManager.notify(0, notification);//note the first argument, the ID should be unique 



} 
} 

Oczywisty


<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver 
     android:name="com.testproject.AlarmReciever" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
    </receiver> 

</application> 


To powinno być wszystko. Próbuję go uruchomić tak, jak jest i nie pokazuje mi niczego. Używam go na emulatorze, to naprawdę ma znaczenie.

EDYCJA: Kiedy mówię, że to nie działa, mam na myśli, że nic nie wyskakuje. Działa dobrze, ale powiadomienie nigdy się nie wyskakuje.

Emisja: enter image description here

Więc problem jest zawężony do Android prostu ignorując moje Notification. Problem polega na tym, że nie wiem, dlaczego -_- więc nie mogę tego naprawić. Czy eksperci w tej sprawie widzą coś nie tak z moim kodem, aby zadzwonić do powiadomienia? Czy ma to jakieś znaczenie na emulatorze?

Odpowiedz

2
Intent intent = new Intent(v.getContext(), AlarmReciever.class); 
// intent.setAction("SOME_AWESOME_TRIGGER_WORD"); replace to: 
intent.setAction("com.testproject.SOME_AWESOME_TRIGGER_WORD"); 

To przynajmniej na pierwszy rzut oka

UPD:

long firstTime = SystemClock.elapsedRealtime(); 

AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, /* INTERVAL IN MS */ 20 * 1000, /* PendingIntent */ intent); 
+0

Jeśli wezmę że z dala, w jaki sposób należy zmienić '' otagować pliku manifestu jest? – Andy

+0

Naprawdę możesz usunąć 'intent.setAction (..)' z kodu + usunąć '' w ogóle z manifestu androida. –

+0

Po prostu to zrobiłem. Nadal nie działa. Dzięki za wskazanie. To poczatek. – Andy

8

Cóż, lekcja na Powiadomienia. Powodem, dla którego otrzymałem błąd, było to, że img MUSI zostać dodany, jeśli nie, to się nie wyświetli! Wszystko, co miałem, było w zasadzie słuszne, z wyjątkiem tego, co Władimir z wdzięcznością potrafił wskazać. Zamieszczanie tego tutaj powoduje, że inni otrzymują podobny problem po przetestowaniu powiadomień.

22

Wpadłem na ten sam problem. Jeśli nie określisz ikony podczas tworzenia "nowego powiadomienia()", powiadomienie nie pojawi się.

+1

Haha, tak. Chciałbym, żeby doktorzy wspominali o tym. Ale hej, próba i błąd w porządku. Teraz inni ludzie wiedzą :) – Andy

0

Dzieje się tak, ponieważ nie ustawiasz ikony powiadomienia. Jeśli ustawisz ikonę powiadomienia, powinna działać. Sam dziennik mówi, że nie można wysłać powiadomienia bez obrazu.

0

Wygląda jakbyś zapomniał zestaw ikon .. Trzeba conajmniej ustawić domyślną ikonę ..

Spróbuj tego ..

Notification.Builder builder = new Notification.Builder(c) 
         .setTicker(tickerText) 
         .setWhen(when) 
         .setContentTitle(arg1.getStringExtra("info")) 
         .setContentText("Success!!") 
         .setAutoCancel(true) 
         .setSmallIcon(R.drawable.ic_launcher); //<--- this one 
Powiązane problemy