我整天都在搜索如何在我看来这个简单的任务...我在我的应用程序中发出警报,当它关闭时,我想将我的应用程序带到用户屏幕前,这样他就可以转动报警... 在我的活动中,我已经建立了打电话给接收者的意图......
registerReceiver(mReceiver, new IntentFilter("sample") );
PendingIntent pendingIntent = PendingIntent.getBroadcast( MapActivity.this, 0, new Intent("sample"),0 );
AlarmManager alarmManager = (AlarmManager)(MapActivity.this.getSystemService( Context.ALARM_SERVICE ));
这是我的onRecieve方法
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm time has been reached", Toast.LENGTH_LONG).show();
Uri notifikacijaAlarma = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
final Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notifikacijaAlarma);
r.play();
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.FULL_WAKE_LOCK, "TRAININGCOUNDOWN");
wl.acquire();
Intent i = new Intent(getBaseContext(), GlavniIzbornik.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setFlags(Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
startActivity(i);
wl.release();
}
因此,即使我去另一个应用程序或在手机上做任何其他事情,我的闹钟响起......它显示Toast并播放铃声,但它不会将我的应用程序带到前面,当我手动转到我的应用程序时它开始活动,但我无法得到它所以它会将我的应用程序带到前面。
有没有人对此有任何建议?
PS我知道我应该从我的闹钟活动中播放铃声...我只是想看看整个代码是否被执行......
答案 0 :(得分:0)
您以明确的Activity
开始Intent
。删除第i.setAction(...)
行和i.setCategory(...)
行。这些在清单中用于在启动器中显示此Activity
。
根据documentation,您没有自己设置Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
。
不要 EVER 使用getBaseContext()
,BroadcastReceiver.onReceive(...)
使用context
,new Intent(context, GlavniIzbornik.class);
或context.startActivity(i)
。在Activity
或Service
中使用this
。