Tom*_*Tom 4 gps android user-permissions
我有这些:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
Run Code Online (Sandbox Code Playgroud)
我可以自己检查GPS:
locationManager = (LocationManager)
context.getSystemService(Context.LOCATION_SERVICE);
fSupportsGPS = (locationManager.getAllProviders().
contains(LocationManager.GPS_PROVIDER));
Run Code Online (Sandbox Code Playgroud)
但我还是有些疑惑.我希望我的应用程序在没有wifi/gps /网络的设备上运行.我唯一使用GPS的原因是在Google地图上显示用户位置.(与其他应用程序相比,这是一个微小的功能,所以我不想对它有任何要求.)
该<uses-feature ...>告诉Android应用程序必须要求该功能,将无法正常工作W/O它,因此Android不允许用户安装该应用程序(事实上,它甚至不会在Play商店/市场广场露面.
要让没有这些功能的用户安装您的应用,您只需添加android:required="false"相应功能的选项即可.您已使用此XML在清单中完成了以下操作:
<uses-feature android:name="android.hardware.camera" android:required="false"/>
Run Code Online (Sandbox Code Playgroud)
要检测用户是否具有该功能(因为现在不是必须的),您可以使用Android API.您已经使用此Java代码完成了此操作:
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
fSupportsGPS = (locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER));
Run Code Online (Sandbox Code Playgroud)
现在,您不能做的一件事是让使用Android 1.6及更早版本的用户安装应用程序,即使这些功能被标记为可选.这是b'coz,Android的版本无法识别此答案中android:required解释的功能.
另外要记住的是,某些<uses-permission ...>标记会触发对权限的一些隐含要求.
要解决此问题,请引用文档:
如果您不希望Google Play根据特定的隐含功能进行过滤,则可以禁用该行为.为此,请在元素中显式声明该功能,并包含android:required ="false"属性.例如,要禁用从CAMERA权限派生的过滤,您将声明该功能,如下所示.
<uses-feature android:name="android.hardware.camera" android:required="false" />
Run Code Online (Sandbox Code Playgroud)
根据这个页面,<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />暗示了网络的要求.要禁用它,请将其添加到清单中:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3122 次 |
| 最近记录: |