Обнаружение разделителя, используемого для совместного использования некоторого контента


В приложении, над которым я сейчас работаю, мне нужно знать, что такое "ACTION_SEND sharer" (Twitter, Facebook, SMS, электронная почта...) пользователь использовал общий доступ к контенту для регистрации его в статистических целях. Можно ли вообще это сделать?

У меня есть несколько идей, одна из которых заключается в том, чтобы изменить целевое намерение этих участников, чтобы указать на намерение получателя, которое получит выбранный участник, сделать все, что нам нужно с этими данными, а затем вызвать окончательное намерение для целевого участника (Twitter, Facebook, SMS, Электронная почта...). Для этого заключительного шага, я полагаю, мне нужно знать общее действие каждого целевого приложения.

С уважением

UPDATE1

Чтобы ilustrate, я разделяю метод, который я в настоящее время использую для совместного использования контента, настраивая экстры намерения в зависимости от целевого sharer:

    private void shareItem(String title, String link) {
    // Standard message to send
    String msg = title + " " + link;

    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("text/plain");

    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
    if (!resInfo.isEmpty()) {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        Intent targetedShareIntent = null;

        for (ResolveInfo resolveInfo : resInfo) {
            String packageName = resolveInfo.activityInfo.packageName;
            targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
            targetedShareIntent.setType("text/plain");

            // Find twitter: com.twitter.android...
            if ("com.twitter.android".equals(packageName)) {
                targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, msg);
            } else if ("com.google.android.gm".equals(packageName)) {
                targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, title);
                targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, Uri.encode(title + "rn" + link));
            } else if ("com.android.email".equals(packageName)) {
                targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, title);
                targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, Uri.encode(title + "n" + link));
            } else {
                // Rest of Apps
                targetedShareIntent.putExtra( android.content.Intent.EXTRA_TEXT, msg);
            }

            targetedShareIntent.setPackage(packageName);
            targetedShareIntents.add(targetedShareIntent);
        }

        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), getResources().getString(R.string.share));
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
        startActivityForResult(chooserIntent, 0);
    }
}

Решено

Следуйте указаниям по этой ссылке: http://goo.gl/hf8Kg

1 4

1 ответ:

Можно ли вообще это сделать?

Вы можете отобразить свой собственный диалог выбора с помощью PackageManager и queryIntentActivities().