我需要在手机重启和开机后自动启动我的应用。
我使用了AutoStart an Application at boot up提供的代码,现在我的Android应用程序在手机重启(重启)后自动启动。
现在,请考虑使用手机电源关闭(关闭手机)选项,而不是重新启动手机。手机开机后,我的应用程序未按预期自动启动。你能解释我错过了什么吗?
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:enabled="true" android:name=".BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
public class BootUpReceiver extends BroadcastReceiver
{
private static SharedPreferences aSharedSettings;
@Override
public void onReceive(Context context, Intent intent)
{
aSharedSettings = context.getSharedPreferences("MYPreferences", Context.MODE_PRIVATE);
boolean isUserLoggedIn = aSharedSettings.getBoolean(kEY.AUTHENTICATED, false);
if(isUserLoggedIn)
{
Intent aServiceIntent = new Intent(context, HomeView.class);
aServiceIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(aServiceIntent);
}
}
}
谢谢。
答案 0 :(得分:3)
如果您在重新启动手机之前至少手动启动一次应用程序,而不是“强行关闭”它,它是否按预期工作?
看看:
Android : android.intent.action.BOOT_COMPLETED on ICS and Gingerbread
答案 1 :(得分:2)
您可以尝试一些事项。
首先检查installLocation
中的应用AndroidManifest.xml
是否设置为android:installLocation="internalOnly"
,这样可确保该应用位于本地存储上。安装到SD卡的应用不会收到BOOT_COMPLETE
意图。
此外,我会删除<category android:name="android.intent.category.DEFAULT" />
没有必要。
您可以尝试的最后一件事是使用完整的包名称:
<receiver android:enabled="true"
android:name="com.myapp.receivers.BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
答案 2 :(得分:2)
尝试添加
<category android:name="android.intent.category.LAUNCHER" />
而不是
<category android:name="android.intent.category.DEFAULT" />.
并检查isUserLoggedIn的值。
答案 3 :(得分:1)
答案 4 :(得分:1)
您开始申请的活动的名称,在您的标签中添加此行.....并告诉我它是否有效
<category android:name="android.intent.category.HomeView" />