Intereting Posts
Обрезка изображения на Android уменьшает размер изображения Каковы размеры различных экранов Android в dp для разных экранов (например, xlarge = 960dp x 720dp)? Использование TabLayout внутри фрагмента; Текст вкладки невидимый Соглашение об именах с сериализацией / десериализацией Firebase? Eclipse не узнает мой Android-телефон – говорит неизвестный Быстро движущиеся тела пропускают столкновение, иногда в Box2d, AndEngine Кнопка создания режима действия Gradle не упаковывает gdbserver в apk. Ndk-gdb приводит к ошибке «ОШИБКА: не отлаживаемое приложение, установленное на целевом устройстве» Как я могу получить тип mime файла с его Uri? Как заставить приложение для Android работать только с RTL-макетом? Ионная ошибка сборки android Каково использование allowCoreThreadTimeout () в ThreadPoolExecutor? Установка целевого почтового адреса в Firebase Invites Android dex дает исключение BufferOverflowException при создании Исключение пробелов Android strings.xml

Как заставить Share Intent открыть конкретное приложение?

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

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

Это мой фактический код, он показывает список общих приложений, установленных на телефоне. Пожалуйста, может кто-нибудь сказать мне, что я должен добавить к коду, чтобы заставить, например, официальное приложение Twitter? И официальное приложение faccebok?

Intent sharingIntent = new Intent(Intent.ACTION_SEND); Uri screenshotUri = Uri.parse("file:///sdcard/test.jpg"); sharingIntent.setType("image/*"); sharingIntent.putExtra(Intent.EXTRA_TEXT, "body text"); sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); startActivity(Intent.createChooser(sharingIntent, "Share image using")); 

благодаря

Для Facebook

 public void shareFacebook() { String fullUrl = "https://m.facebook.com/sharer.php?u=.."; try { Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setClassName("com.facebook.katana", "com.facebook.katana.ShareLinkActivity"); sharingIntent.putExtra(Intent.EXTRA_TEXT, "your title text"); startActivity(sharingIntent); } catch (Exception e) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(fullUrl)); startActivity(i); } } 

Для Twitter.

 public void shareTwitter() { String message = "Your message to post"; try { Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setClassName("com.twitter.android","com.twitter.android.PostActivity"); sharingIntent.putExtra(Intent.EXTRA_TEXT, message); startActivity(sharingIntent); } catch (Exception e) { Log.e("In Exception", "Comes here"); Intent i = new Intent(); i.putExtra(Intent.EXTRA_TEXT, message); i.setAction(Intent.ACTION_VIEW); i.setData(Uri.parse("https://mobile.twitter.com/compose/tweet")); startActivity(i); } } 

Существует более общий способ сделать это, и нет необходимости знать полное имя пакета намерения приложения.

Посмотреть это сообщение: Как настроить намерение поделиться в Android?

100% Рабочее решение

Если вы хотите поделиться чем-то в любом приложении, которое хотите, или открыть URL-адрес через каждое действие, просто используйте этот метод:

 private void shareOrViewUrlViaThisApp(String appPackageName, String url) { boolean found = false; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(intent, 0); if (!resInfo.isEmpty()){ for (ResolveInfo info : resInfo) { if (info.activityInfo.packageName.toLowerCase().contains(appPackageName) || info.activityInfo.name.toLowerCase().contains(appPackageName) ) { intent.setPackage(info.activityInfo.packageName); found = true; break; } } if (!found) return; startActivity(Intent.createChooser(intent, "Select")); } } 

И просто позвоните:

 shareOrViewUrlViaThisApp(<your package name>,<your url>); 

Этот ответ был вдохновлен этим .