我想在ShareActionProvider
上展示ActionBar
,但要有自定义外观和感觉。只有一个简单的共享图标没有边框,右边没有最常用的应用程序图标。但是提供最常用应用程序的弹出菜单。有没有一种简单的方法可以实现它而不实现自己的ShareActionProvider
?
答案 0 :(得分:-1)
好的,所以无论ActionBarSherlock首先进行测试,看看你是否正确创建了你的意图,ABS使用与通用选择器相同的代码,看看你执行此代码时是否显示你正在寻找的应用程序。
Intent I= new Intent(Intent.ACTION_SEND);
I.setType("text/plain");
I.putExtra(android.content.Intent.EXTRA_TEXT, "My Test Text");
startActivity(Intent.createChooser(I,"Share using ..."));
所有处理纯文本的应用程序都会显示,如果是facebook,或者你想要的任何东西都没有,那么这些应用程序不支持您已注册类型的ACTION_SEND意图(纯文本/文本)。 (Facebook确实如此,但一分钟内更多关于这一点)
ABS有一个使用共享操作提供程序的示例,但它尝试发送照片,而不是文本消息(状态更新)您应该使用的设置是这样的
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate your menu.
getSupportMenuInflater().inflate(R.menu.share_action_provider, menu);
// Set file with share history to the provider and set the share intent.
MenuItem item = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
ShareActionProvider provider = (ShareActionProvider) item.getActionProvider();
provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
// Note that you can set/change the intent any time,
// say when the user has selected an image.
provider.setShareIntent(createShareIntent());
return true
}
以下是用于匹配应用并将其从示例中列出的意图
private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/plain");
Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.putExtra(Intent.EXTRA_TITLE, "This is an android icon");
return shareIntent;
}
但你希望它是
private Intent createShareIntent() {
Intent I= new Intent(Intent.ACTION_SEND);
I.setType("text/plain");
I.putExtra(android.content.Intent.EXTRA_SUBJECT, "TEST - Disregard");
I.putExtra(android.content.Intent.EXTRA_TEXT, Uri.parse("http://noplace.com"));
}
这应该在ABS中给出与我在上面的选择器显示的小测试存根中相同的列表。