【问题标题】:Start an Activity on Phone Boot in Android在 Android 中启动手机启动活动
【发布时间】:2019-03-15 17:09:32
【问题描述】:

我想在手机启动时自动启动我的应用程序。 我在清单文件中声明了一个 BroadcastReceiver。

<receiver android:name=".Autostart">  
<intent-filter>  
    <action android:name="android.intent.action.BOOT_COMPLETED" />  
</intent-filter>  

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

我为接收器制作了一个 java 文件。

Autostart.java

public class Autostart extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {  

    Intent pushIntent = new Intent(context, MushTouchActivity.class); 
    pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(pushIntent);
    }
}

}

但是,当我打开手机时,应用程序没有启动。谁能告诉我我在这里缺少什么?

【问题讨论】:

    标签: android android-activity startup boot


    【解决方案1】:

    试试你的 if 语句:

        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
    
    
            Intent i = new Intent(context, MushTouchActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    
            context.startActivity(i);
        }
    

    【讨论】:

    • 这确实有效。如果要在启动时启动活动,则需要添加此标志。谢谢。
    【解决方案2】:

    如果您使用的是 Android 3.1 或更高版本:

    确保您至少手动启动了一次应用程序(例如,通过从应用程序抽屉打开它)。否则,您的应用会被系统标记为已停止:

    应用程序在首次安装但尚未启动时处于停止状态

    已停止的应用不会收到任何广播意图,包括 BOOT_COMPLETED

    更多信息请见Android 3.1. Platform - Launch controls on stopped applications

    【讨论】:

    • 感谢您的回答,但我正在为 2.3.3 进行设计,并且我也手动启动了我的应用程序一次。然后我才重新启动。
    • @CodeDroid 鉴于问题中的详细信息,这当然是一种可能性。由于您没有提供更多信息:我想我对您的一个问题或其他问题投了反对票,而您现在只是生气了?编辑:可能是因为我昨天close-voted this one
    【解决方案3】:

    最好的答案是显示一个通知并要求用户从该通知启动应用程序,并在通知中为该活动使用挂起的意图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      相关资源
      最近更新 更多