Android ACTION_SEND仅与特定应用程序共享

时间:2015-06-13 17:44:32

标签: android facebook android-intent

在我的Android应用程序中,我有4个按钮,用于 Facebook Viber 电报 Whatsapp ,我想要根据每个按钮分享不同的内容。

例如,如果用户点击了viber按钮,我想用 ACTION_SEND 与viber共享内容。

我发现THIS解释了如何为facebook和twitter做这个,但似乎它正在调用该应用程序的特定类名,我不知道除了facebook之外我想要使用的应用程序是什么

1 个答案:

答案 0 :(得分:2)

所有Android应用程序都有唯一ID,因此首先我们必须检查这些应用程序是否安装在用户的设备中,然后我们可以通过意图传递唯一ID进行共享。按照以下说明:

  1. 不同应用的唯一ID:

    Telegram : org.telegram.messenger
    Whatsapp : com.whatsapp
    private void sendMessage(Context context,String message, String appIds) { final boolean isAppInstalled =isAppAvailable(context, appIds); if (isAppInstalled) { Intent myIntent = new Intent(Intent.ACTION_SEND); myIntent.setType("text/plain"); myIntent.setPackage(appIds); myIntent.putExtra(Intent.EXTRA_TEXT, message); mUIActivity.startActivity(Intent.createChooser(myIntent, "Share with")); } else { Toast.makeText(context, "App not Installed", Toast.LENGTH_SHORT).show(); } }

  2. 检查这些应用是否已安装,是否已安装,然后通过意图发送消息。

    private boolean isAppAvailable(Context context, String appName) 
            {
                PackageManager pm = context.getPackageManager();
                try 
                {
                    pm.getPackageInfo(appName, PackageManager.GET_ACTIVITIES);
                    return true;
                } 
                catch (NameNotFoundException e) 
                {
                    return false;
                }
            }
    
  3. 指示是否已安装指定的应用程序并可用作intent。这个 方法检查包管理器以查找可以响应指定应用程序的意图的已安装包。如果找不到合适的包,则此方法返回false。

    with