ShareActionProvider与动态Extras更改

时间:2014-09-22 11:08:51

标签: android android-intent

我的应用程序中有 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部分?

我将非常感谢你的帮助。

1 个答案:

答案 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));

一切正常。