我的应用程序中有 ShareActionProvider ,我可以在 OnCreateOptionsMenu 方法中分享我在 Intent Extras 中定义的文字:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
MenuItem item = menu.findItem(R.id.menu_item_share);
myShareActionProvider = (ShareActionProvider) item.getActionProvider();
Intent myIntent = new Intent();
myIntent.setAction(Intent.ACTION_SEND);
myIntent.putExtra(Intent.EXTRA_TEXT, siteUrl);
myIntent.setType("text/plain");
myShareActionProvider.setShareIntent(myIntent);
return true;
}
我有几个AsyncTask改变了我的public static siteUrl
当AsyncTask完成时,如何更改Intent的Extras部分?
我将非常感谢你的帮助。
答案 0 :(得分:0)
最后我弄清楚,如何使用 BroadcastReceiver 动态更改共享附加内容。
我创建过滤器标志:
public static SHAREDACTIONUPDATE = "SHAREDACTIONUPDATE";
和新 BroadcastReceiver()实例:
BroadcastReceiver onNotice = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent();
myIntent.setAction(Intent.ACTION_SEND);
myIntent.putExtra(Intent.EXTRA_TEXT, actualTrackVideoUrl);
myIntent.setType("text/plain");
if (myShareActionProvider != null) {
myShareActionProvider.setShareIntent(myIntent);
}
}
};
然后我在 onCreateOptionMenu()方法中使用IntentFilter registerReceiver():
LocalBroadcastManager.getInstance(this).registerReceiver(onNotice,
new IntentFilter(ActivityStation.UPDATEINTENTEXTRAS));
最后我在AsyncTasks onPostExecute()方法中调用Broadcast:
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(ActivityStation.UPDATEINTENTEXTRAS));
一切正常。