您的位置:首页 > Web前端 > React

ShareActionProvider的简单用法

2015-10-10 16:20 393 查看
如果你的应用需要分享一些消息或者图片,那么你的手机上很可能已经有另一个应用具备此种功能了。例如你想把应用中的某个图片作为附件以邮件的形式发 送出去,那么你真得没有必要自己再写一个专门发送邮件的Activity。我们可以借助ShareActionProvider。

在ActionBar中添加分享功能会使得应用更加高效友好。Android4.0(API等级14)引入的 ActionProvider类使得分享功能变得更加的简单。一旦ActionProvider被绑定到Action Bar的一个菜单中,它就能处理那一项的显示和反应。在ShareActionProvider的实例中,只需提供分享的Intent,其他的会被 ShareActionProvider自行处理。

 

首先在res/menu/main.xml中添加一个菜单项:

<item
android:id="@+id/action_share"
android:showAsAction="ifRoom"
android:title="@string/action_share"
android:actionProviderClass="android.widget.ShareActionProvider" />


然后在Activity的onCreateOptionsMenu()方法里设置菜单项,主要是为这个ShareActionProvider指定intent:

 

 

 

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);

// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.action_share);

// Fetch and store ShareActionProvider
if (item != null) {
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
if (!setShareIntent()){
menu.removeItem(R.id.action_share);

//如果没有第3方应用可以直接用,
//可以添加一个新的菜单项,可以跳转到自己的activity,然后处理等
}
}
return true;
}

// Call to update the share intent
private boolean setShareIntent() {
if (mShareActionProvider != null) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "这是要发送的文本");

PackageManager pm = getPackageManager();
//检查手机上是否存在可以处理这个动作的应用
List<ResolveInfo> infolist = pm.queryIntentActivities(shareIntent, 0);
if (!infolist.isEmpty()) {
mShareActionProvider.setShareIntent(shareIntent);
return true;
}
return false;
}
return false;
}


 

 

最后别忘了添加必要的字符串资源:

 

res/values/strings.xml

 

 
 

<?xml version="1.0" encoding="utf-8"?>
<resources>
…
<string name="app_name">简单的分享动作</string>
<string name="action_share">分享</string>
…
</resources>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: