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

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