Android ACTION_SEND Intent и Google Analytics — как узнать, что они выбрали?

Мы используем Google Analytics, чтобы отслеживать, какие функции нашего приложения используются и как, но этот вопрос также может относиться к любой ситуации, когда вы хотите знать, что сделал пользователь после вызова намерения ACTION_SEND.

По сути, я хочу использовать эту функцию, чтобы позволить пользователям обмениваться контентом (электронная почта, Twitter, Facebook и т. д.). Это прекрасно работает с использованием стандартных функций Android Intent, позволяя пользователю выбирать предпочитаемый почтовый клиент, приложение Twitter и т. д.

        Intent sharingIntent = new Intent(Intent.ACTION_SEND);
        //Text seems to be necessary for Facebook and Twitter
        sharingIntent.setType("text/plain");
        sharingIntent.putExtra(Intent.EXTRA_TEXT, "whatever I want to share");
        startActivity(Intent.createChooser(sharingIntent,"Share using"));

Однако я не могу найти способ узнать, что сделал пользователь по возвращении из Intent. Вместо этого я изучил использование startActivityForResult, но это, кажется, возвращает только то, завершили ли они или отменили совместное использование (и даже это кажется непоследовательно реализованным в разных приложениях) - это, конечно, не дает мне никакой информации о том, что они сделали.

На данный момент похоже, что для того, чтобы иметь свою аналитику, мне нужно будет реализовать обмен через Facebook и Twitter, используя собственные настраиваемые действия и соответствующие SDK?

Это кажется позором, поскольку подрывает одну из приятных функций Android — возможность использовать ваши любимые приложения электронной почты, Twitter, Facebook и браузера....


person Chris Lalande    schedule 09.02.2011    source источник
comment
Хороший вопрос. Я пытался выяснить точно так же. Но после некоторого времени попыток я только пришел к выводу, что вы даже не можете знать, вошли ли они в приложение электронной почты/facebook/sms или нет. Надеюсь, кто-то здесь это знает.   -  person Eric Nordvik    schedule 09.02.2011


Ответы (2)


Если бы вы сами создали список выбора намерения, вместо того, чтобы позволить Intent.createChooser сделать это за вас, вы могли бы увидеть, какое намерение было выбрано, прежде чем выполнять его самостоятельно.

Вот как это делает Gallery3D из исходного кода Android. Он запрашивает у диспетчера пакетов пакеты, соответствующие намерению, которое вы хотите запустить, и возвращает список ResolveInfo, которые вы можете использовать, чтобы представить пользователю их выбор, затем записать их выбор и начать действие с их выбором.

person Jess    schedule 09.02.2011
comment
Веб-сайт, указанный выше, недоступен по соображениям безопасности. Кто-нибудь знает, где еще можно найти код? - person howettl; 22.09.2011
comment
@howettl Вот его копия Cyanogen: github .com/CyanogenMod/android_packages_apps_Gallery3D/blob/ - person Jess; 28.09.2011

Как насчет чтения журналов Android? Я ожидаю, что журналы содержат подробную информацию о том, что они выбрали. Некрасиво, но может сработать.

person Ollie C    schedule 09.02.2011