2014-09-22 67 views
0

我在我的应用程序已经ShareActionProvider,我可以分享我在我的意图额外OnCreateOptionsMenu方法定义的文本:ShareActionProvider动态额外改变

@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完成时如何更改意图的额外部分?

我将不胜感激。

回答

0

最后我想清楚,如何使用BroadcastReceiver动态更改共享额外功能。

创建过滤器旗:

public static SHAREDACTIONUPDATE = "SHAREDACTIONUPDATE"; 

和新广播接收器()实例:

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); 
      } 
     } 
    }; 

然后我registerReceiver()用的IntentFilter在onCreateOptionMenu()方法:

LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, 
       new IntentFilter(ActivityStation.UPDATEINTENTEXTRAS)); 

最后,我称之为广播在AsyncTasks onPostExecute()方法:

LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(ActivityStation.UPDATEINTENTEXTRAS)); 

,一切工作正常。