Tôi đang cố gắng chụp kết quả của Intent.createChooser
để biết ứng dụng nào mà người dùng đã chọn để chia sẻ.Nhận ứng dụng được chọn từ Intent.createChooser
Tôi biết đã có rất nhiều bài viết liên quan đến điều này:
- How to know which application the user chose when using an intent chooser?
- https://stackoverflow.com/questions/6137592/how-to-know-the-action-choosed-in-a-intent-createchooser?rq=1
- How to get the user selection from startActivityForResult(Intent.createChooser(fileIntent, "Open file using..."), APP_PICKED);?
- Capturing and intercepting ACTION_SEND intents on Android
nhưng những bài viết có phần cũ, và Tôi hy vọng rằng có thể có một số phát triển mới.
Tôi đang cố gắng triển khai share action mà không cần có mặt trong trình đơn. Giải pháp gần nhất với những gì tôi muốn được cung cấp bởi ClickClickClack, người đề xuất triển khai trình chọn ứng dụng tùy chỉnh, nhưng điều đó có vẻ nặng nề. Ngoài ra, có vẻ như có thể có một số móc Android để tải ứng dụng đã chọn, như là ActivityChooserModel.OnChooseActivityListener.
Tôi có mã sau trong MainActivity của mình, nhưng phương thức onShareTargetSelected
không bao giờ được gọi.
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareMessage());
sendIntent.setType("text/plain");
Intent intent = Intent.createChooser(sendIntent, getResources().getText(R.string.share_prompt));
ShareActionProvider sap = new ShareActionProvider(this);
sap.setShareIntent(sendIntent);
sap.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
@Override
public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
System.out.println("Success!!");
return false;
}
});
startActivityForResult(intent, 1);
Được rồi. Thật đáng thất vọng khi nghe và không rõ ràng từ các tài liệu trong ShareActionProvider. – dsg
Tôi đã kết thúc chỉ với giải pháp này: http://stackoverflow.com/a/18980872/244526 – dsg