4

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

我在启动时使用了 AutoStart an Application 提供的代码,现在我的 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); 
}

    }
}

谢谢你。

4

5 回答 5

3

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

看一下:

Android:在 ICS 和 Gingerbread 上的 android.intent.action.BOOT_COMPLETED

启动完成回归确认

于 2012-12-20T12:01:15.837 回答
2

尝试添加

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

代替

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

并检查 isUserLoggedIn 的值。

于 2012-12-20T12:01:46.260 回答
2

您可以尝试几件事。

首先检查您的应用程序是否设置为此,确保应用程序在本地存储上installLocation。安装到 sdcard 的应用程序将不会收到意图。AndroidManifest.xmlandroid:installLocation="internalOnly"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>
于 2012-12-20T12:00:35.730 回答
1

您开始应用程序的活动名称,在您的标签中添加此行.....并让我知道它是否有效

  <category android:name="android.intent.category.HomeView" />
于 2012-12-20T12:04:12.013 回答
1

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

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

检测是否启用了 HTC “快速启动”

于 2012-12-20T11:58:53.243 回答