我从这里了解到 android 版本 3.1 及更高版本不支持启动完成意图。但是在我的应用程序中。我想在设备重新启动后在我的应用程序中自动启动服务。我不希望用户手动启动我的应用程序。我该怎么做?提前感谢您的帮助。
是什么让你认为ACTION_BOOT_COMPLETED广播不再发送?我经常使用它,其他人也是如此。只需确保您在清单中具有RECEIVE_BOOT_COMPLETED权限即可。
请尝试以下步骤在启动后启动应用程序:
创建一个扩展 BroadcastReceiver 的类:
public class AutostartService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("in broad....");
if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
{
System.out.println("in broadcast receiver.....");
Intent i = new Intent(context, Splash.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
并在安卓清单文件中添加以下内容:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".AutostartService" android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
好吧,这现在已经很老了,可能大多数人都学会了它,但仍然可能有用。
从 3.1+ 及更高版本开始,为了接收BOOT_COMPLETED
,您的应用必须至少由用户启动一次。
注意:此规则不适用于/system
应用