Ich bin ein Neuling in Android. Heute habe ich versucht, mit AlarmManage für meine Erinnerungsanwendung zu arbeiten, die Benutzern erlaubt, Stunde und Minuten einzugeben, um Benachrichtigung anzuzeigen, und ich habe einige Probleme damit. 1. Das erste Problem ist, wenn die Benachrichtigung erscheint, es vibriert nur und hatte keinen Ton, obwohl ich Sound-Standard für die Benachrichtigung und Einstellung erlauben Ton für mein Telefon eingestellt habe. 2. Wenn ich die Anwendung schließe, wenn ich bei der Benachrichtigung berühre, wird die MainActivity angezeigt und der AlarmManager funktioniert wieder, so dass meine Anwendung die Benachrichtigung erneut anzeigt. Aber wenn ich bei der Benachrichtigung berühre, wenn die Anwendung geöffnet wird, wird die Benachrichtigung nicht angezeigt. also möchte ich meine Bewerbung nur einmal benachrichtigen. Wie kann ich es tun ?. 3. Obwohl ich Zeit für die Erinnerung gesetzt habe, aber wenn ich die Anwendung geschlossen habe, erscheint irgendwann mein Telefon Benachrichtigung meiner Erinnerung Anwendung zu der Zeit, die ich nie eingestellt habe. Wie kann ich dieses Problem beheben?Wie man AlarmManager beim Start der Aktivität stoppt
MyAlarmService
private NotificationManager mManager;
@Override
public IBinder onBind(Intent arg0)
{
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate()
{
// TODO Auto-generated method stub
super.onCreate();
}
@SuppressWarnings("static-access")
@Override
public void onStart(Intent intent, int startId)
{
super.onStart(intent, startId);
// Toast.makeText(this, "I'm running", Toast.LENGTH_SHORT).show();
long[] v = {500,1000};
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setVibrate(v)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setSmallIcon(R.drawable.ic_remind)
.setContentTitle("My notification")
.setContentText("This is a test message!");
mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
mBuilder.setAutoCancel(true);
Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(intent1);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingNotificationIntent);
mManager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mManager.notify(0, mBuilder.build());
}
@Override
public void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
}
Receiver
public void onReceive(Context context, Intent intent)
{
Intent service1 = new Intent(context, MyAlarmService.class);
context.startService(service1);
}
MainActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText edt_hours = (EditText)findViewById(R.id.edt_hour);
final EditText edt_minutes = (EditText)findViewById(R.id.edt_minutes);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(edt_hours.getText().toString()));
calendar.set(Calendar.MINUTE, Integer.parseInt(edt_minutes.getText().toString()));
//calendar.set(Calendar.SECOND,0);
Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
});
} //end onCre
p/s: Es tut mir leid, wenn meine Frage nicht klar ist, weil mein Englisch nicht gut ist. Und ich möchte Ihnen für jeden danken, der diese Frage gelesen hat.
danke dir, bro, es funktioniert perfekt. Aber ich weiß nicht, warum mein Code nicht funktioniert hat. Und in Ihrem Code funktioniert der Sound immer noch nicht –
Sorry mein Fehler, Verwenden Sie diese "Intent Intent = neue Absicht (MainActivity.this, NotificationReceiver.class);" statt "Intent intent = new Intent (MainActivity.this, AlarmReceiver.class);" in MainActivity. Und jetzt versuche es noch einmal – Sabari
Ich benutze deinen Code aber der Sound funktioniert immer noch nicht :(. Ich denke, dieses Problem ist mein Handy :(. Bcuz ich versuche, einige app die gleichen in CHplay. ANd der Sound nicht working.thanks you for answer:) –