我的应用程序与仅WiFi设备不兼容

时间:2015-01-15 04:38:27

标签: android android-manifest android-permissions

我开发了一个Android应用程序,显示来电者的来电者电信位置。

我已将其上传到Google Play上,但此应用不会出现在仅限WiFi的设备上,而是说您的设备不兼容。

我的清单许可详情如下。

     <uses-permission android:name="android.permission.READ_CALL_LOG"/>
   <uses-permission android:name="android.permission.READ_CONTACTS"/>
   <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


     <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

我怀疑关注权限

     <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

哪些特定权限会产生问题? 解决方案是什么。

由于

2 个答案:

答案 0 :(得分:2)

Google Play商店根据所需权限和Android设备中提供的功能过滤应用程序。因此,您的应用不会显示在仅限WiFi的设备中,因为该应用需要CALL_PHONE许可和MODIFY_STATE_PERMISSION

MODIFY_PHONE_STATE权限不允许您拨打电话,但这意味着电话是必需的。

来源:https://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions

因此,您应该使用<uses-feature>元素而不是上面提到的权限。

来自文档:您可以通过在元素中使用android:required =&#34; false&#34;明确声明隐含功能来禁用基于隐含功能的过滤。属性。

在你的情况下:

<uses-feature android:name="android.hardware.telephony" android:required="false" />

但是,您还需要确保在实际检查它是否可用之前不要使用任何与电话相关的功能。

在Android应用中,对于SDK&gt; = 5,您应该使用:

PackageManager pm = this.getPackageManager();
boolean hasTelephony = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);

答案 1 :(得分:0)

你怀疑以下是正确的......

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

某些权限“暗示”某些硬件存在的必要性。换句话说,与手机相关的权限要求设备具有电话功能(显然)。

您可以使用AndroidManifest.xml中的<uses-feature>元素来解决这个问题。这允许您指定是否需要“功能”。

查看<uses-feature-element>

的文档

特别是Permissions that Imply Feature Requirements部分,其中解释了与<uses-permission>元素相关的要求。

编辑:还有一件事 - 如果使用 CAN 功能但它不是 REQUIRED ,则在尝试之前,您需要在代码中检查其可用性。使用它,否则你将得到不可预测的结果或可能的异常/崩溃。