android.hardware.telephony可以添加到设备中

时间:2013-07-29 15:12:58

标签: android android-intent permissions uri android-package-managers

我有一个在意图中使用tel:// URI的功能,这会启动手机应用程序并且还可以选择使用内置手机,因此对于没有手机信号的设备,我处于检查状态

if(pm.hasSystemFeature("android.hardware.telephony"))其中pm是PackageManager对象。

如果不存在这种情况,有些设备会崩溃,尽管能够根据清单权限安装应用程序。

但是也有VOIP应用会采用tel://意图,但实际上并没有使用电话硬件。

有没有办法可以检查用户的设备是否有可以使用tel URI而不是检查它们具有哪些硬件功能?

1 个答案:

答案 0 :(得分:1)

您可以检查系统是否有任何可以接收意图的活动:

private void tryOpenDialer(String phoneNumber) {
    if (TextUtils.isEmpty(phoneNumber)) {
        // invalid input - return or throw IllegalArgumentException
        return;
    }
    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber));
    PackageManager pkgManager = getPackageManager();
    List<ResolveInfo> activities = pkgManager.queryIntentActivities(intent, 0);
    if (activities.size() > 0) {
        context.startActivity(intent)
    } else {
        // if you want, pop up a toast or dialog telling the user there is
        // nothing on the device to handle this action
    }
}