2014-10-19 2 views
0

Я ищу весь день, как это сделать, на мой взгляд, простая задача ... У меня есть будильник в приложении, и когда он отключается, я хочу принести свой приложение в передней части экрана пользователя, так что он может выключить будильник ... в моей деятельности я создал намерение вызвать приемник ...Начальная деятельность от приемника тревожного вещания, даже когда пользователь нажал кнопку «домой»

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 я знаю, что я должен играть мелодию из моей тревоги деятельности ... я просто хотел, чтобы увидеть, если весь код запускается на выполнение ...

+1

wow, спасибо, человек ... он, наконец, работает ... я не могу сказать, сколько я потратил на эту проблему ... – user3632055

+1

спасибо человеку ... я не видел места для галочки ответ, но теперь я сделал это ... :) – user3632055

+0

Добро пожаловать в Stackoverflow. Наслаждайтесь своим пребыванием, и я надеюсь, вы многому научились. –

ответ

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.