在Android重新启动时运行应用程序
我想在手机重新启动时自动运行应用程序。我已经添加了这些行我的代码:在Android重新启动时运行应用程序
public class BootComplete extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
Intent serviceIntent = new Intent(context, MyActivity.class);
context.startService(serviceIntent);
}
}
而且我已经添加了这些行到我的清单:
<receiver
android:name=".BootComplete"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
和它的权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
</uses-permission>
它正常工作时MyActivity
类只包含一些后台任务。例如,当我想打开LED时。但是当我想播放媒体(例如视频)时,它不起作用。只是说服务已经开始,并没有发挥任何作用。
我该如何解决?有什么我必须添加到代码?
做这个改变BroadcastReceiver
:
public class BootComplete extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
Intent serviceIntent = new Intent(context, MyActivity.class);
// Change is here...
serviceInten.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(serviceIntent);
}
}
在清单:
<receiver
android:name=".BootComplete"
android:enabled="true"
android:exported="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter android:priority="500">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
并留下许可,因为它是。
问题不在于您的代码!这是关于Android设备。
当设备启动时,您会收到广播。但请注意,当您收到广播时,SD卡仍在填充,您无法访问它。如果该媒体在SD卡上,则无法播放。另外,你应该注意别的:如果用户在他/她的SD卡上安装你的应用程序,该广播接收机将永远不会触发。 因此,如果您想防止某些设备出现问题,请在您的清单中选择内部安装位置。
感谢您的回答。我不想释放我的应用程序。我只想把它放在我的设备中。而且我的设备中没有存储卡。有没有办法做到这一点? –
当接收者打电话和媒体没有播放时,请分享您的日志猫。 –
您是否使用android monitor来查看您的日志猫? –
你为什么要打一个活动服务? – JoxTraex
@JoxTraex我通过在Stack中搜索找到了这些。有没有更好的方法? –