针对平板电脑的android.permission.CALL_PHONE
我正在开发一个应用程序,并在清单中我有:
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
当我点击button来执行此代码:
Intent intentcall = new Intent(); intentcall.setAction(Intent.ACTION_CALL); intentcall.setData(Uri.parse("tel:" + phonenumber)); // set the Uri startActivity(intentcall);
它会在手机上运行良好,在平板电脑上它会popup一个显示,您可以查看或添加到联系人的号码。 但是,如果我在清单中保留许可,则不适用于市场上的平板电脑。 我如何保持代码行为,并仍然在平板电脑和手机市场上展示?
关于“使用function”,它会崩溃 – 您是否在实际拨打电话之前检查电话是否可用? 这可能是您需要为应用程序在平板电脑上的情况做额外的步骤。 你在清单中说的是,这个function并不是必需的。 它可能依靠你实际上实现的逻辑。
在AndroidManifest中,您需要:
<uses-feature android:name="android.hardware.telephony" android:required="false" />
CALL_PHONE
权限意味着电话是必需的,但如果您指定不是您将不被过滤。
尝试使用Intent.ACTION_DIAL,而不是Intent.ACTION_CALL。
例如:
try { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone_number)); startActivity(intent); } catch (Exception e) { //TODO smth }
在这种情况下,您可以从AndroidManifest.xml中完全删除这些标签:
<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-feature android:name="android.hardware.telephony" android:required="false" />
而不是添加具有ACTION_CALL
标识符的用户,请将其更改为ACTION_INSERT_OR_EDIT 。
您也需要这些权限,而不是CALL_PHONE
权限:
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
看看这个相关的问题:
在市场上找不到应用程序
从谷歌文档:
声明的元素只是信息,意味着安装应用程序之前,Android系统本身不检查设备上的匹配function支持
用法仅适用于Google Play