是否可以列出Intent.ACTION_SEND? 我的意思是我需要知道是否有人通过action_send在Facebook或推特上分享。
答案 0 :(得分:2)
不,您无法通过ACTION_SEND
确定某个人是否在您链接到的应用程序中实际执行了任何操作。这与Web非常相似,您不知道某个人是否在通过URL链接到的网站上做任何事情。
答案 1 :(得分:2)
也许你想要一个更完整的答案,因为被接受的答案很短,我已经太晚了,但希望它仍然有用:)
所以这是处理多个意图的可能解决方案......
1)您想知道意图的结果(例如成功或失败)吗?
使用以下行启动意图:
startActivityForResult(intent, 1); //instead of startActivity(intent)
通过覆盖onActivityResult:
来检索requestCode和resultCode@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0) {
if(resultCode == Activity.RESULT_OK){
//intent 0 = succesful (Facebook)
} else{
//intent 0 = failed or canceled
}
} else if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
//intent 1 = succesful (Twitter)
} else{
//intent 1 = failed or canceled
}
}
}
2)您想知道意图打开了哪个应用
不要相信内置的意图选择器,创建自己的对话框并为每个意图赋予另一个requestCode
(一个唯一的整数值,以识别意图)
一个例子:
new AlertDialog.Builder(this)
.setTitle("Share with friends!")
.setSingleChoiceItems(new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,
new String[]{"Facebook", "Twitter"}), -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
StartFacebookShare();
} else if (which == 1) {
StartTwitterShare();
}
dialog.dismiss();
}
}).show();
private void StartFacebookShare() {
String messageUrl = "http://www.stackoverflow.com"; //the url you want to share
try {
Intent intent = new Intent("android.intent.category.SEND");
intent.putExtra(Intent.EXTRA_TEXT, messageUrl);
intent.setClassName("com.facebook.katana", "com.facebook.katana.ShareLinkActivity");
startActivityForResult(intent, 0);
} catch (Exception e) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://m.facebook.com/sharer.php?u=" + messageUrl));
startActivityForResult(intent, 1);
}
}
private void StartTwitterShare() {
String messageUrl= "http://www.stackoverflow.com"; //the string you want to tweet
try {
//see edit below for more info on API
Twitter twitter = TwitterFactory.getSingleton();
Status status = twitter.updateStatus(messageUrl);
} catch (Exception e) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://twitter.com/intent/tweet?text=" + messageUrl));
startActivityForResult(intent, 1);
}
}
可以找到一些有用的信息here和here,如果您对我的代码有建议(我总是喜欢反馈^^),或者如果您是的话,可以搜索here或发表评论坚持某事:)
编辑:一些小的改动,比如意图,总是添加一个带有web意图的捕获(现在不能失败,对吧?) 对于Twitter部分,我使用了jar(将它放在你的'libs'文件夹中)和需要关注registration的Twitter API和 configuration,祝你好运!