android broadcastreceiver 开机自动启动

android broadcastreceiver auto start on boot up

我的 AndroidManifest.xml 包含:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="false">   <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>

MyBroadcastReceiver

class MyBroadcastreceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        context.startService(new Intent(context, MainService.class));
        //Toast.makeText(context, "    O    ", Toast.LENGTH_SHORT).show();
        new AlertDialog.Builder(context)
        .setTitle("OK")
        .setMessage("OK")
        .setPositiveButton("ㅇㅇ", null)
        .setCancelable(false)
        .show();
    }
}

但是,

重启后我看不到 AlertDialog

我也启动过很多次...

如何让 broadcastreceiver 在启动后自动启动?

广播接收器无法显示对话。改为启动 activity。

问题是您试图从 BroadcastReceiver 显示 AlertDialog,这是不允许的。您不能从 BroadcastReceiver 显示 AlertDialog。只有活动可以显示对话框。

你应该做点别的,让 BroadcastReceiver 像你一样在启动时启动并启动 activity 来显示对话框。

将以下 Activity 添加到您的应用程序中

public class AlertActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        new AlertDialog.Builder(this)
            .setTitle("OK")
            .setMessage("OK")
            .setPositiveButton("ㅇㅇ", null)
            .setCancelable(false)
            .show();
    }
}

另外不要忘记将新的 activity 添加到您的清单中。

那么你只需要在你的接收器中启动activity

@Override
public void onReceive(Context context, Intent intent)
{
    context.startService(new Intent(context, MainService.class));
    context.startActivity(new Intent(context, AlertActivity.class));
}

如果此回答对您有帮助,请点击“赞”按钮下方的复选标记。