Android应用在Google Play商店中为平板电脑/手机添加特定权限

时间:2016-06-01 06:53:45

标签: android google-play

将我的应用程序上传到Google Play后,我尝试将其下载到我的nexus 7并且没有看到该应用。 在它的基础上,我在控制台中得到了一个建议,使其成为平板电脑。 我在清单中的内容是:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

现在我假设这是因为SEND_SMS。 问题是,我希望手机具有短信功能,但不是平板电脑。

当我尝试时:

<uses-feature android:name="android.permission.SEND_SMS" android:required="false"></uses-feature>

手机上有例外。

我看了看: Android app not available for some tablets in Google Play

Android app showing in Google Play for Phone but not for Google Play for Tablets

Android App is not visible on Google Play store for tablets

但是没有工作,我该怎么办?

THX。

2 个答案:

答案 0 :(得分:0)

我从未遇到过这个问题,但我认为你必须“使用 - 功能”

在AndroidManifest中,您需要:所有电话功能不仅仅是短信

  • SEND_SMS
  • CALL_PHONE
  • 和其他

<uses-feature android:name="android.permission.SEND_SMS" android:required="false" />
<uses-feature android:name="android.permission.CALL_PHONE" android:required="false" />

CALL_PHONE权限意味着需要电话,但如果您指定不是电话,则不会过滤。

链接:uses-feature - Android Developer site

  

每次将应用程序上传到Android Market发布者网站时,Android Market都会扫描应用程序的清单文件。它在某些情况下(例如和元素)查找元素并与其他元素一起评估它们。在建立应用程序的所需功能集之后,它将该列表内部存储为与应用程序.apk和应用程序版本相关联的元数据。

     

当用户使用Android Market应用程序搜索或浏览应用程序时,该服务会将每个应用程序所需的功能与用户设备上提供的功能进行比较。如果设备上存在所有应用程序所需的功能,则Android Market允许用户查看该应用程序并可能下载该应用程序。如果设备不支持任何所需功能,Android Market会过滤应用程序,以便用户看不到该应用程序且无法下载。

答案 1 :(得分:0)

如果这是 SMS权限相关问题,我建议您在运行时请求sms权限。 首先,从清单中删除SEND_SMS,然后在应用中编写发送短信代码的位置,检查设备是手机还是平板电脑,如下所示:

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    // do something
} else {
    // ask for permission code
}

此答案中资源R.bool.isTablet为described here

然后在else代码块中,在运行时请求SEND_SMS权限。由于每次都会询问,您只能在需要发送短信时检查此权限。否则会出现无用的提示。

可以在运行时从android developer's site请求权限完全复制粘贴权限代码。如果有效,请告诉我。

链接:

comment on this answer还讨论了如果分辨率无法识别平板电脑/手机,您还可以检查电话功能(或仅检查电话功能以获得运行时的权限)。< / p>