手机开机后,Android应用需要自动重启

时间:2012-12-20 11:50:44

标签: android

我需要在手机重启和开机后自动启动我的应用。

我使用了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); 
}

    }
}

谢谢。

5 个答案:

答案 0 :(得分:3)

如果您在重新启动手机之前至少手动启动一次应用程序,而不是“强行关闭”它,它是否按预期工作?

看看:

Android : android.intent.action.BOOT_COMPLETED on ICS and Gingerbread

Boot Completed Regression Confirmed

答案 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)

您使用的是HTC设备吗?如果是这样,您可能启用了一个名为“快速启动”的功能

有关详细信息,请参阅此链接。

Detect if HTC "Fast boot" is enabled

答案 4 :(得分:1)

您开始申请的活动的名称,在您的标签中添加此行.....并告诉我它是否有效

  <category android:name="android.intent.category.HomeView" />