如果用户安装了特定的消息传递应用程序,请检查intent

时间:2016-01-25 17:39:20

标签: android android-intent phone-number

我正在使用这个代码,Ragu Swaminathan帮助我完成了原始帖子:How to show both texting and dialer apps with a single Intent on Android?

final List<Intent> finalIntents = new ArrayList<Intent>();
final Intent textIntent = new Intent(Intent.ACTION_VIEW);
textIntent.setType("text/plain");
textIntent.setData(Uri.parse("sms:"));
final PackageManager packageManager = getActivity().getPackageManager();
final List<ResolveInfo> listCam = packageManager.queryIntentActivities(textIntent, 0);
for (ResolveInfo res : listCam) {
  final String packageName = res.activityInfo.packageName;
  final Intent intent = new Intent(textIntent);
  intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
  intent.setPackage(packageName);
  finalIntents.add(intent);
}

Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:121"));
Intent chooserIntent = Intent.createChooser(
        callIntent, "Select app to share");

chooserIntent.putExtra(
        Intent.EXTRA_INITIAL_INTENTS, finalIntents.toArray(new Parcelable[]{}));

startActivity(chooserIntent);

我有这个代码,它会将用户手机上安装的短信和拨号器应用程序分开,并允许他们选择一个来发送消息/给某人打电话。

我想知道的是,是否可以在此快餐栏上添加另一个部分,检查用户是否安装了whatsapp或安装了其他特定应用程序。

此外,作为Android新手,我尝试过使用代码,但最终搞砸了。我想做的另一件事是创建类似论文的部分;

短信应用:

.....

.....

.....

拨号器应用:

.....

.....

.....

WHATSAPP:

.....

欢迎任何帮助,如果我的问题不明确,请告诉我。

编辑;

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用getPackageInfo方法

PackageManager pm = getPackageManager();
PackageInfo pi = pm.getPackageInfo(certainAppPackageName, 0);

if (pi != null) {
    //app is installed, do smth
}

Google Play链接存在包名称。 例如:

 https://play.google.com/store/apps/details?id=org.telegram.messenger

其中org.telegram.messenger是包名称