2015-11-03 141 views
0

我想在android系统使用GPS,但它给了我这个错误:的Android程序请求的权限

enter image description here

我把清单这些权限

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

谁能帮助我,请

+0

在最新的Android版本中,我们可以能够限制有两种权限的权限正常和安全的位置管理服务需要在安全许可,你需要检查它的用户被允许存取权限许可 – dileep

回答

0

提示暗示:用户可能会拒绝权限。在这种情况下,这个调用将会抛出错误...

现在,android要求用户接受应用程序在安装时要求的所有权限。在即将到来的M版本中,android会根据“需要”切换到iOS风格的权限。

调用此方法查看是否授予权限。如果没有,你需要处理这种情况。

context.checkCallingPermission(permission) 

声明清单中的权限仅意味着您正在请求权限。在新版本中,它不能保证用户会给你这样的权限。

在旧版本的用户必须接受所有或拒绝所有权限

+0

因此,正如你所说的那样,如果用户不允许应用程序使用Gps或网络,程序将正常工作并且不起作用。但是当我在启用了GPS接入的模拟器上运行它时,应用程序停止了。 – Saleh923

+0

@ Saleh923是的,如果用户拒绝权限,应用程序可能会崩溃。 请检查模拟器崩溃的原因是什么......可能是由于不同的问题! 顺便检查一下你的模拟器是否可以模拟GPS /网络。 最好是在设备上测试 –

0

这实际上并不是一个错误,而是一个由林特提出并可能导致问题的提示!

希望您了解Android 6.0(Marshmallow)中引入的新权限模型,用户可能不允许使用GPS或网络或其他任何软件,因此可能会在您的应用程序中导致问题!

现在,根据lint分析,在实现特定功能之前,您应该检查相同的权限是否可用!

+0

所以你说,意味着,如果用户不允许应用程序使用Gps或网络,该程序将正常工作并且不会工作。但是当我在启用GPS接入的模拟器上运行它时,应用程序停止运行 – Saleh923

0

此条件检查允许用户访问读取位置的权限

if(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED||checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,meter,mill,new locationlist(this)); 
}