Ho codice, e non funziona, quindi chiedo a chiunque di darmi una mano. Ci sono pochissime informazioni su questo argomento specifico.Perché Android ignora la creazione della notifica?
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 (Aware ho scritto male, ma dal momento che questo è come è, im andando con esso)
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
}
}
manifesto
<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>
Quello dovrebbe essere tutto. Sto cercando di eseguirlo così com'è e non mi sta mostrando nulla. Lo sto eseguendo su un emulatore è che conta davvero.
EDIT: Quando dico che non funziona, voglio dire che non compare nulla. Funziona bene, ma la notifica non si apre mai.
Il problema:
Quindi il problema è ridotta a Android solo ignorando la mia notifica. Il problema è che non mi dice perché -_- quindi non posso aggiustarlo. Qualche esperto in materia vede qualcosa di sbagliato nel mio codice per chiamare una notifica? Ha importanza che sia su un emulatore?
Se prendo quella via, come devo cambiare 'tag di mio file manifesto'? –
Andy
In realtà è possibile rimuovere 'intent.setAction (..)' dalla sezione codice + remove '' dal manifest di Android. –
L'ho appena fatto. Ancora non funziona. Grazie per averlo fatto notare però. È un inizio. – Andy