Intereting Posts
Где находится браузер по умолчанию на Android 4? Как обнаружить жестов салфетки на веб-просмотре Xamarin Shared Projects vs Портативные библиотеки классов Почему я получаю «libcore.io.ErrnoException: open failed: ENOENT» при запуске приложения MIO IOIO? Эспрессо долго нажимает на пункт меню и всплывающее меню ANDROID: Как поставить задержку после нажатия кнопки? Вызовите (и получите ответ) код USSD в фоновом режиме? Проблемы с распределением памяти с помощью приложения android Android – myLooper () vs getMainLooper () Библиотека 3D-карт для Android Кордова, Android, невероятно медленная загрузка Как получить контекст в службе намерений Osmdroid: Как я могу создать и загрузить карту из своих собственных растровых изображений (плитки)? Android Remote methods (AIDL) vs Intents – производительность и использование аккумулятора Как мы можем заблокировать ориентацию экрана камеры во время процесса захвата камеры?

Как заставить 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")); 

благодаря

Solutions Collecting From Web of "Как заставить Share Intent открыть конкретное приложение?"

Для 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>); 

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