Tengo código, y simplemente no funciona, entonces le pido a alguien que me ayude. Hay muy poca información sobre este asunto específico.¿Por qué Android ignora la creación de la Notificación?
MainActivity
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 (Consciente te sueltan mal, pero ya que eso es lo que es, me voy con él)
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
}
}
Manifiesto
<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>
Eso debería ser todo. Estoy tratando de ejecutarlo tal como está y no me está mostrando nada. Lo estoy ejecutando en un emulador es lo que realmente importa.
EDIT: Cuando digo que no funciona, quiero decir que no aparece nada. Funciona bien, pero la Notificación nunca aparece.
El problema:
Así que la cuestión se reduce a Android simplemente haciendo caso omiso de mi notificación. El problema es que no me dice por qué -_- así que no puedo arreglarlo. ¿Algún experto en el tema ve algo mal con mi código para llamar una notificación? ¿Importa que esté en un emulador?
Si tomo esa distancia, ¿cómo debería cambiar la etiqueta de mi archivo de manifiesto ''? –
Andy
En realidad, puedes eliminar la sección 'intent.setAction (..)' del código + eliminar '' del manifiesto de Android. –
Acabo de hacer. Aún no funciona. Gracias por señalarlo. Es un comienzo. – Andy