首页 > 解决方案 > 如何使用 BroadcastReciver 从非运行的 android 应用程序启动活动?

问题描述

我使用AlarmManagerand创建了一个警报应用程序BroadcastReciever。我想alertDialog在闹钟响起时打开一个。

这是我BroadcastReciver班级的代码:

    public class AlarmReceiver extends BroadcastReceiver {

           public void onReceive(Context context, Intent intent) {

                Intent i = new Intent(context, AlertDialogActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
                Log.d("MyTime","OnReceived called");
        }

}

代码AlertDialogActivity

public class AlertDialogActivity extends Activity{

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        public void showDialog(Context context, final MediaPlayer mediaPlayer){
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View v = inflater.inflate(R.layout.fragment_alarm_running, null);
        final AlertDialog dialog = new AlertDialog.Builder(context)
                .setView(v)
                .setCancelable(false)
                .create();

        dialog.setOnShowListener(new DialogInterface.OnShowListener() {

    });
        dialog.show();
}

当应用程序在闹钟响铃期间运行时,对话框显示成功。但是,当应用程序未运行并触发警报时,该onReciver()方法调用成功,但dialog不显示。

简单来说,应用程序关闭时AlertDialogActivity不会调用。onRecieve()

注意:我被迫使用AlertDialog而不是通知等。

我应该怎么做才能解决这个问题?提前感谢您的回答!

标签: androidbroadcastreceiverandroid-alertdialogalarmmanager

解决方案


推荐阅读