0

我有一个tel://在意图中使用 URI 的功能,这将启动手机应用程序并提供使用内置手机的选择,因此对于没有蜂窝信号的设备,我设置了一个条件来检查

if(pm.hasSystemFeature("android.hardware.telephony"))pmPackageManager 对象在哪里。

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

但也有一些 VOIP 应用程序会采取这种tel://意图,但实际上并不使用电话硬件。

有没有一种方法可以检查用户的设备是否有可以使用 tel URI 的东西,而不是检查他们有哪些硬件功能?

4

1 回答 1

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
    }
}
于 2013-07-29T15:27:52.407 回答