[英]how to get list of installed instant messenger apps?
我的应用程序应该能够通过WhatsApp,电子邮件,SMS等在TextView中发送文本。为此,我需要已安装的Messging应用程序列表。 我用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));
}
}
如果您的目标是冰淇淋三明治,则应使用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!”);
假设您设法获得所需应用程序的列表,那么您将如何处理它们? 我认为您需要让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的类型和其他功能创建一个能够处理该操作的应用程序列表。 改编短信,电话等其他操作并不难。您可以在此处了解更多信息,将内容发送到其他应用
希望这可以帮助...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.