经过多次寻找SO和其他地方并且无法解决我的问题后,我现在将创建一个新帖子,希望能够解决我的问题。
我正在整理一个测试应用程序以使用Google Play服务获取位置,并且似乎已准备好所有内容 - 包括权限。当测试应用程序通过模拟器运行时,出现错误,指出客户端必须具有ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限。下面是堆栈跟踪的一部分。
11-19 16:34:40.403: E/AndroidRuntime(1245): Caused by: java.lang.SecurityException: Client must
have ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to perform any location
operations.
这是AndroidManifest.xml的一部分
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
还有什么?我正在使用Google API平台5,api 21作为我的构建目标,并将google-play-services ...库添加到项目中。我还在DDMS的“仿真器控制”选项卡上设置了模拟纬度和经度值。
还有什么需要付诸实施才能让它发挥作用吗?可以从模拟器运行吗?对于它的价值,正在使用的项目是从Google下载的LocationUpdates项目。
如果您需要其他信息以帮助我指出正确的方向,请告知我们。
谢谢。
答案 0 :(得分:0)
即使您的权限位于清单文件中,我也不确定为什么会收到权限错误但我已经可以告诉您,除非您使用的是Google API,否则Google Play服务无法在模拟器上运行
请参阅here
要使用Google Play服务API开发应用,您需要使用Google Play服务SDK设置项目。如果您尚未安装Google Play服务SDK,请按照添加SDK包的指南进行操作。 要在使用Google Play服务SDK时测试您的应用,您必须使用以下任一项: 兼容的Android设备,运行Android 2.3或更高版本,包括Google Play商店。 具有AVD的Android模拟器,可运行基于Android 4.2.2或更高版本的Google API平台。
编辑: 哇,我刚刚注意到这篇文章已经很老了。如果这是一个问题,请告诉我或删除帖子