我有一个基本的 Android 应用程序,它应该连续重启手机一定次数。为此,我需要在手机启动时启动应用程序。为此,我基本上按照此处的说明进行操作,将权限添加到清单并创建一个启动活动的 BroadcastReceiver 类。这是我的一些相关代码:
public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("StartMyServiceAtBootReceiver called.");
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
// Intent activityIntent = new Intent("com.example.rebooter.MainActivity");
Intent activityIntent = new Intent(context,MainActivity.class);
activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(activityIntent);
}
}
}
从清单文件中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.rebooter"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</activity>
<service
android:name=".RebootManager"
android:label="Reboot Manager" >
<action android:name="com.example.rebooter.RebootManager" />
</service>
<receiver android:name=".StartMyServiceAtBootReceiver"
android:enabled="true"
android:exported="true"
android:label="StartMyServiceAtBootReceiver" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</receiver>
</application>
在 Eclipse 模拟器中,应用程序似乎工作正常。也就是说,虽然我的模拟器没有植根并且手机没有正确执行重启命令,但我确实看到,在启动时,正确的活动开始了。
现在,当我在运行 Android 4.0.4 的特定系统上尝试它时,应用程序中的所有内容都正常工作,除了启动时启动。有任何想法吗?
我试图通过安装另一个在启动时启动的应用程序并确认它确实在启动时启动,并且它确实出现在正在运行的应用程序下,从而消除了任何硬件问题的可能性(因为我没有使用商业发布的手机)作为启动后的缓存进程。
我将不胜感激任何帮助。如果您需要任何其他信息,请告诉我。