我想在手机启动时自动启动我的应用程序。 我在清单文件中声明了一个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);
}
}
}
但是,当我打开手机时,应用程序无法启动。谁能告诉我这里缺少什么?
答案 0 :(得分:4)
尝试你的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);
}
答案 1 :(得分:2)
如果您使用的是Android 3.1或更高版本:
确保您至少手动启动了一次应用程序(例如,从应用程序抽屉中打开它)。否则,系统会将您的应用标记为停止:
应用程序在首次安装但尚未启动时处于停止状态
停止的应用不会收到任何广播意图,包括BOOT_COMPLETED
。
有关详细信息,请参阅Android 3.1. Platform - Launch controls on stopped applications。
答案 2 :(得分:0)
最好的答案是显示一个通知,并要求用户从该通知中启动应用程序,并在通知中对该活动使用未决的意图。