是否可以列出Intent.ACTION_SEND? 我的意思是我需要知道是否有人在Facebook上分享,或者通過action_send在Twitter上發佈推文。Android - 共享
回答
也許你想要一個更完整的答案,因爲接受一個比較短,我一年爲時已晚,但希望它仍然是有用的:)
因此,這裏是在處理多個意圖可能的解決方案...
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或者如果你有我的代碼的建議發表評論(我總是喜歡反饋^^)或者如果你堅持的東西:)
編輯:一些小的變化,如意圖,並總是添加一個網絡意圖(現在不能失敗,對吧?) 而對於Twitter部分我使用jar(將它放在你的'libs'文件夾中)以及需要下列registration和 configuration的Twitter API,祝你好運!
好的一段代碼。現在不需要它,但我肯定將來需要它!謝謝 – goodm 2013-04-27 19:32:40
切勿將第三方應用程序中的類和包名稱硬編碼,這些應用程序不屬於某些記錄和支持的API的一部分。 – CommonsWare 2013-04-27 19:41:50
@CommonsWare同意。看到編輯,這是否有點你想的解決方案? – 2013-04-29 09:01:46
不,您無法確定某個人是否在通過ACTION_SEND
鏈接到的應用程序中確實執行了任何操作。這與Web非常相似,您不知道某個人是否在通過URL鏈接到的網站上執行任何操作。
- 1. Android共享意圖
- 2. Android共享選項
- 3. Android共享服務?
- 4. Android直接共享
- 5. Android共享偏好
- 6. Android共享文件
- 7. 意圖Android共享
- 8. 藍牙共享 - Android
- 9. Android共享文件
- 10. Android共享偏好
- 11. android共享用戶ID用於共享特定的共享首選項值
- 12. Android中總私有髒,共享Pss,共享共享髒的差異
- 13. Android的共享偏好名
- 14. Android與Picasso共享元素
- 15. 共享對LinkedIn的Android
- 16. Android共享意圖EXTRA_STREAM
- 17. 的Android PlusClient共享圖像
- 18. 共享偏好的Android
- 19. Android,Java:共享對話框
- 20. Android的共享罐子
- 21. 與eclipse共享android項目
- 22. 樓宇共享庫爲Android
- 23. 共享Android項目Eclipse
- 24. Android的 - 意向共享
- 25. Xamarin Android:共享MonoRuntime錯誤
- 26. 共享兩款Android活動
- 27. Android Studio共享首選項
- 28. 共享tcp socket android服務
- 29. android共享應用程序
- 30. Android共享 - Facebook的SDK - ShareActionProvider
你想要實現什麼? – 2012-03-14 12:32:47
我有「共享」按鈕用於在用戶的Facebook牆上發佈,並且我有DialogListener知道用戶是否真的共享或只是按下按鈕並退出。我想有可能分享到Twitter或短信,但我需要知道用戶是否真的分享以增加他的分數。 – goodm 2012-03-14 12:36:01