android - 如何在 Android 上通过单个 Intent 同时显示短信和拨号应用程序?

标签 android android-intent phone-number

在我的应用中,用户可以发短信/调用某人。我正在通过我的应用程序中的 Intent 启动一个 Activity,目前 1 个用于发短信,1 个用于拨号器,是否可以将它们组合起来,例如所以当用户点击一个按钮来打电话/发短信时,它会在一个窗口中显示一个短信/拨号应用程序列表?

拨号器:

Intent callIntent = new Intent(Intent.ACTION_CALL);
 callIntent.setData(Uri.parse("tel:" + somenumber));
 startActivity(callIntent);

消息应用:

Intent callIntent = new Intent(Intent.ACTION_PROCESS_TEXT);
callIntent.setData(Uri.parse("tel:" + somenumber));
startActivity(callIntent);

我想要做的是,我不想有两个单独的按钮 1 用于文本和 1 用于通话,我想要 1 并且在单击时应该允许用户打电话或发短信。

最佳答案

您可以使用 Intent.EXTRA_INITIAL_INTENTS 和 queryIntentActivities 来实现这一点。

有点复杂,但可以试试下面的代码..

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);

祝你好运..!

关于android - 如何在 Android 上通过单个 Intent 同时显示短信和拨号应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34990682/

相关文章:

android - 从颜色列表中查找最接近的颜色

java - 如何在 Android 中将 ASCII 字符转换为字符串?

java - 使用两个 TextView 将过滤器添加到 ListView

android - 使用 cordova/phonegap 获取用户电话号码

javascript - 正则表达式检查国际电话号码的开头

android - Gradle:如何构建不同构建类型的不同风格?

android - 警报对话框应该从屏幕底部弹出?

java - 编辑文本中不显示字符串

android - 避免在 Android 中注册重复的广播接收器

MySQL 列 : Change existing phone numbers into specific format?