我从这里得知,在Android 3.1及以上版本中,不支持启动完成意图(boot complete intent)(来源)。但在我的应用中,我想要在设备重新启动后自动启动服务,而不希望用户手动启动我的应用程序。我该怎么做?感谢您提前的帮助。
我从这里得知,在Android 3.1及以上版本中,不支持启动完成意图(boot complete intent)(来源)。但在我的应用中,我想要在设备重新启动后自动启动服务,而不希望用户手动启动我的应用程序。我该怎么做?感谢您提前的帮助。
尝试以下步骤以在启动后启动应用程序:
创建一个扩展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);
}
}
}
并且将以下内容添加到 Android Manifest 文件中:
<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
应用程序。
你为什么认为 ACTION_BOOT_COMPLETED 广播不再发送了?我经常使用它,其他人也是。只要确保在清单文件中拥有 RECEIVE_BOOT_COMPLETED 权限即可。