Android 检查设备是否可以拨打电话

Android 检查设备是否可以拨打电话,android,android-intent,package-managers,Android,Android Intent,Package Managers,我通过PackageManager检查功能 final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(Intent.ACTION_CALL); List<ResolveInfo> list = packageManager.queryIntentActivities(intent,

我通过PackageManager检查功能

final PackageManager packageManager = context.getPackageManager();
        final Intent intent = new Intent(Intent.ACTION_CALL);
        List<ResolveInfo> list =
                packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        return list.size() > 0;
final-PackageManager-PackageManager=context.getPackageManager();
最终意图=新意图(意图.行动呼吁);
列表=
packageManager.QueryInputActivities(仅适用于意图、packageManager.MATCH_默认值);
返回列表.size()>0;
但无论如何,结果是错误的。该应用程序在平板电脑和手机上运行,但结果是一样的。我哪里错了?

你应该试试这个:

PackageManager pm = this.getPackageManager();

 if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
     System.out.println("horray");
 } else {
     System.out.println("nope");
 }
编辑:检查设备中是否安装了Skype

按以下方法传递
Skype
URI

private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        boolean app_installed = false;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed ;
    }
你应该试试这个:

PackageManager pm = this.getPackageManager();

 if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
     System.out.println("horray");
 } else {
     System.out.println("nope");
 }
编辑:检查设备中是否安装了Skype

按以下方法传递
Skype
URI

private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        boolean app_installed = false;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed ;
    }

除了在平板电脑上运行应用程序外,它还能正常工作,但系统中并没有电话功能,但我可以通过skype拨打电话。你们可以检查
skype
是否安装在设备中。是的,当然,但检查每一个可以拨打电话的应用程序并不合理。若我在系统中有这样的应用程序,默认情况下我可以通过启动下一个intent(newintent(intent.ACTION_调用,Uri.parse(number));)来使用它们。我只需要知道这些应用程序是否安装在系统中。以编程方式检查权限哪些应用程序在其清单中列出了呼叫权限。这就是我需要的。但我怎么能做到这一点呢?除了在平板电脑上运行应用程序外,它还能工作,但系统中并没有电话功能,但我可以通过skype拨打电话。你们可以检查
skype
是否安装在设备中。是的,当然,但检查每个可以拨打电话的应用程序并不合理。若我在系统中有这样的应用程序,默认情况下我可以通过启动下一个intent(newintent(intent.ACTION_调用,Uri.parse(number));)来使用它们。我只需要知道这些应用程序是否安装在系统中。以编程方式检查权限哪些应用程序在其清单中列出了呼叫权限。这就是我需要的。但我怎么能做到这一点呢?