Возможно, вы хотели получить более полный ответ, потому что принятый ответ был довольно коротким, я опоздал на год, но, надеюсь, он все еще полезен:)
Итак, вот возможное решение для обработки нескольких намерений ...
1) Вы хотите узнать результат (например, успех или неудача) намерения?
Просто запустите намерение, используя следующую строку:
startActivityForResult(intent, 1); //instead of startActivity(intent)
И получить requestCode и resultCode путем переопределения onActivityResult:
@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);
}
}
Некоторые полезныеинформацию можно найти здесь и здесь , возможно, поиск здесь или комментарий, если у вас есть предложения по моему коду (мне всегда нравится обратная связь ^^) или если вы 'застрял на чем-то:)
Редактировать: Некоторые незначительные изменения, такие как впалатки и всегда добавляли улов с веб-намерением (не может сейчас потерпеть неудачу, не так ли?) А для части Twitter я использовал jar (поместите его в папку «libs») и API Twitter, которыйнеобходима следующая регистрация и конфигурация , удачи!