the*_*ler 6 android android-intent
我试图将一个对象传递给BroadcastReceiver,它将在下载完成后执行某些操作.如何从我的活动中访问BroadcastReceiver的onReceive方法中的Intent对象?现在我在我的活动中有这个:
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long id = manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)
我在我的BroadcastReceiver中有这个,它在下载完成时完成:
DownloadManager mgr = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
Run Code Online (Sandbox Code Playgroud)
一切正常,我的BroadcastReceiver在下载完成时做了我想要的.但现在我想将一个对象从我的活动传递给BroadcastReceiver.通常,我只是创建一个Intent并将该对象添加到Intent.但是,我没有在我的代码中创建一个Intent,因为BroadcastReceiver使用Context.DOWNLOAD_SERVICE响应下载.
在我的BroadcastReceiver中,我想在onReceive()方法中从Intent对象获取数据:
@Override
public void onReceive(Context context, Intent intent)
{
intent.getParcelableExtra("object");
}
Run Code Online (Sandbox Code Playgroud)
如何从我的活动中将数据传递到此Intent对象?我该如何访问它?我尝试使用getIntent().putExtra("object", object)但它似乎是一个不同于在BroadcastReceiver的onReceive方法中使用的Intent,因为我得到一个nullPointerException
编辑:这是我在AndroidManifest.xml中的相关代码
<receiver
android:name="com.android.devon.appfrenzy.DownloadReceiver"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
在执行下载之前,将值保存在SharedPreference中
editor.putInt(MainActivity.CERIS_LAST_DW_ID_KATALOG, m_intIdKatalog);
editor.commit();
Run Code Online (Sandbox Code Playgroud)
然后在 onReceive 中从 Shared Preference 中获取值
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
SharedPreferences mCeris;
mCeris = arg0.getSharedPreferences(MainActivity.CERIS_PREFERENCES,
Context.MODE_PRIVATE);
int m_intIdKatalog = mCeris.getInt(MainActivity.CERIS_LAST_DW_ID_KATALOG, 0);
}
Run Code Online (Sandbox Code Playgroud)