在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时。但是当我想播放媒体(例如视频)时,它不起作用。只是说服务已经开始,并没有发挥任何作用。

我该如何解决?有什么我必须添加到代码?

+0

您是否使用android monitor来查看您的日志猫? –

+0

你为什么要打一个活动服务? – JoxTraex

+0

@JoxTraex我通过在Stack中搜索找到了这些。有没有更好的方法? –

做这个改变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卡上安装你的应用程序,该广播接收机将永远不会触发。 因此,如果您想防止某些设备出现问题,请在您的清单中选择内部安装位置。

+0

感谢您的回答。我不想释放我的应用程序。我只想把它放在我的设备中。而且我的设备中没有存储卡。有没有办法做到这一点? –

+0

当接收者打电话和媒体没有播放时,请分享您的日志猫。 –