【问题标题】:Intent ACTION_CALL android意图 ACTION_CALL android
【发布时间】:2015-02-09 13:48:50
【问题描述】:

我正在尝试搜索具有用于电话呼叫的意图过滤器的活动。这就是我试图获取所有可用活动的方法:

Intent callIntent = new Intent(Intent.ACTION_CALL);
    PackageManager pm = context.getPackageManager();
    List<ResolveInfo> resolveInfo = pm.queryIntentActivities(callIntent, 0);

这会导致 resolveInfo 列表为空,这意味着没有找到拨打电话的活动。 尽管如此,如果我使用以下意图,用于拨打电话的内置 android 应用程序就会启动:

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

我的最终目标是使用电话应用程序,它在 HTC ONE M8 中用作 CAR APP 的一部分。

有什么想法吗?

【问题讨论】:

    标签: android android-intent phone-call


    【解决方案1】:

    您必须将 setdata 行添加到您的意图中,例如:

    callIntent.setData(Uri.parse("tel:" + 888888888));
    

    那么完整的代码将是:

    Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:" + 888888888));
        PackageManager pm = getPackageManager();
        List<ResolveInfo> resolveInfo = pm.queryIntentActivities(callIntent, 0);
        Log.d("data", resolveInfo.size()+"");
    

    现在您将找到可用活动的数量。

    【讨论】:

    • 谢谢,添加 .setData(..) 行有所作为。现在我可以看到所有可用于通话的活动!
    • 这只解决了我的部分问题。我正在尝试使用 HTC ONE M8 的 Car App 应用程序。但可能如果应用程序的开发人员没有提供意图并​​且我不知道包名称,我将无法使用应用程序的活动。我的假设对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2016-05-19
    相关资源
    最近更新 更多