在启动时将数据传递给广播接收器,android

Pass data to Broadcast receiver on Boot, android

在此先感谢您的帮助。

我的应用程序中有一个由 activity 创建的 SharedPreference 对象。在设备启动时,我如何才能获得存储在该 SharedPreference 对象中的值?这是我到目前为止所拥有的(由于某种原因在启动时不是 运行 /我想在这里启动 activity 的唯一原因是确保我的 DeviceBootReceiver 代码工作正常/ activity 工作正常,因为我已经独立启动了它)。请注意,出于隐私原因,我更改了 class 个名称

xml

<uses-sdk
    android:maxSdkVersion="20"
    android:minSdkVersion="17"
    android:targetSdkVersion="17" />

<application
    android:name="app"
    android:launchMode="singleTask"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:logo="@drawable/ic_launcher"
    android:label="app"
    android:theme="@style/AppTheme" >

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <activity
        android:name="activity"
        android:label="activity"
        android:icon="@drawable/ic_launcher"
        android:logo="@drawable/ic_launcher"
        android:screenOrientation="portrait"
        android:clearTaskOnLaunch="true"
        android:launchMode="singleTask">


        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <receiver
        android:enabled="true"
        android:name=".DeviceBootReceiver"
        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>


</application>

广播代码

public class DeviceBootReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, activity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
}

就像在 Activity 中一样 sharedPreference,但现在 context

例如

context.getSharedPreferences(PREFS_NAME, 0);

PreferenceManager.getDefaultSharedPreferences(context);

取决于它在您的 Activity 中的调用方式。

编辑: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 应与 <application> 处于同一级别,而不是在 <application>