在启动时将数据传递给广播接收器,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>
内
在此先感谢您的帮助。
我的应用程序中有一个由 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>