2015-09-05 4 views
0

Я попытался этоКак получить обратный вызов ACION_SEND Намерения

private void postImage(Uri uri) { 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_SEND); 
      intent.setType("image/*"); 
      intent.addCategory(Intent.CATEGORY_DEFAULT); 
      intent.putExtra(Intent.EXTRA_TEXT, "My bracelet image"); 
      intent.putExtra(Intent.EXTRA_TITLE, "Action Bracelet"); 
      intent.putExtra(Intent.EXTRA_STREAM,uri); 
      Intent chooser=Intent.createChooser(intent,"Share Image Using"); 
      try{ 
      context.startActivity(chooser); 
      } 
      catch(ActivityNotFoundException e){ 
       Toast.makeText(context,"You don't have any share application installed",Toast.LENGTH_SHORT).show(); 
       Log.e("Image Load","failed"); 
      } 
     } 

Теперь моя проблема, мне нужно имя приложения, на котором это изображение является общим иМ также создал свой собственный диалог для него, но проблема остается тем же. Потому что, когда я выбираю вариант для обмена, например, facebook, и я нажал кнопку «Назад», тогда изображение не является общим, и я знаю только, что пользователь нажимает на facebook. , поэтому мне нужен обратный вызов, который дает мне result_ok и result_cancle и имя приложения. Может кто-нибудь помочь мне я застрял здесь за последние три дня ...

+0

Отличный ответ на подобный вопрос с примером кода https://stackoverflow.com/a/43668105/2855857 – palamunder

ответ

2

Теперь моя проблема, мне нужно имя приложения, на котором это изображение является общим

Если ваш minSdkVersion 22 или выше, используйте the createChooser() that takes an IntentSender as the third parameter, так как это ваш единственный способ узнать, что выбрал пользователь.

Если minSdkVersion ниже 22, то вам придется создать свой собственный пользовательский интерфейс Chooser стиля, используя PackageManager и queryIntentActivities(), чтобы выяснить, какие действия должны быть перечислены в этом интерфейсе.

Я также создал свой собственный диалог для него, но проблема остается тем же

Вы, конечно, знаете, что пользователь выбрал в диалоговом окне. Это все, что вы собираетесь получить с уровня API 22: createChooser().

Потому что, когда я выбираю вариант для обмена, например, facebook, и я нажал кнопку назад, тогда изображение не будет использоваться, и я знаю только, что пользователь нажимает на facebook.

Конечно. Пользователь может делать то, что хочет пользователь в этом другом приложении. Пользователь не должен нажимать BACK; пользователь может просто не отправлять что-либо. То есть между пользователем и этим приложением — информация о том, что пользователь сделал что-либо, кто пользователь поделился информацией и т. Д., Недоступен для вас.

+0

Пример кода для одной и той же концепции здесь https://stackoverflow.com/a/ 43668105/2855857 – palamunder

-2

Вы можете использовать startActivityForResult для получения обратного вызова.

http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29

+0

Я пробовал это alse, и я всегда получаю в нем результат. – ADM

+0

Итак, я думаю, что нет способа получить обратный вызов от ACTION_SEND – ADM

+0

Да, вам нужно использовать PackageManager & queryIntentActivities() для создания собственного выбора. –

Смежные вопросы