【问题标题】:how to get list of installed instant messenger apps?如何获取已安装的即时通讯应用程序列表?
【发布时间】:2012-05-08 18:39:39
【问题描述】:

我的应用程序应该能够通过 WhatsApp、电子邮件、SMS 等在 TextView 中发送文本。为此,我需要一个已安装的消息应用程序列表。我用 PackageManger 试过,但我得到了所有应用程序。我怎样才能只获得即时消息应用程序?

这是我列出已安装应用的代码:

PackageManager packageManager=this.getPackageManager(); 
    List<PackageInfo> applist=packageManager.getInstalledPackages(0);
    Iterator<PackageInfo> it=applist.iterator();
    while(it.hasNext()){
    PackageInfo pk=(PackageInfo)it.next();
    if(PackageManager.PERMISSION_GRANTED==(packageManager.checkPermission(Manifest.permission.INTERNET, pk.packageName)& packageManager.checkPermission(Manifest.permission.RECEIVE_SMS, pk.packageName))) //checking if the package is having INTERNET permission
    {
    myList.add(""+pk.applicationInfo.loadLabel(packageManager));
    }
    }

【问题讨论】:

  • 提出一个规则(英文),将应用程序限定为“即时通讯应用程序”如果你能做到这一点,有可能在代码中实现并执行......如果不是...... .

标签: android email sms android-package-managers


【解决方案1】:

假设您设法获得了您想要的应用程序列表,那么您将如何处理它们? 我认为您需要让 android 向您的用户显示应用程序列表,以便他们根据执行的操作选择他们想要处理文本的应用程序。幸运的是,这是 Android 中的内置功能。这是我发送电子邮件的功能:

public static void StartEmailIntent (Context cx, String EmailAddress){
    Intent email = new Intent(Intent.ACTION_SEND);

    email.setType("plain/text");
    email.putExtra(Intent.EXTRA_EMAIL, new String[]{EmailAddress});

    cx.startActivity(Intent.createChooser(email, cx.getString(R.string.dlg_sendmail_selectortitle)));
}

如您所见,我将 Intent.ACTION_SEND 设置为操作,然后使用 Intent.createChooser android 创建一个能够根据 Intent 的类型和附加内容处理该操作的应用程序列表。调整短信、电话等其他操作应该不难。您可以在此处阅读更多信息Sending Content to Other Apps

希望这会有所帮助...

【讨论】:

    【解决方案2】:

    如果您的目标是冰淇淋三明治,您应该使用ShareActionProvider。在那里,您可以获得所需的分享方式列表。

    您还可以阅读此android-developer-blogpost,其中解释了如何通过意图进行共享。例如,对于您的电子邮件共享:

    Intent intent=new Intent(android.content.Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
    
    // Add data to the intent, the receiving app will decide what to do with it.
    intent.putExtra(Intent.EXTRA_SUBJECT, “Some Subject Line”);
    intent.putExtra(Intent.EXTRA_TEXT, “Body of the message, woot!”);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2021-07-15
      相关资源
      最近更新 更多