问题描述
考虑下面的代码,我用它来准备读取位置。
LocationManager locationManager = (LocationManager) context.getSystemService (Context.LOCATION_SERVICE);
List<String> listProviders = locationManager.getProviders (true);
在 Android 清单中使用 <uses-sdk android:minSdkVersion="16" />
,代码可以完美运行。但是当我将 android:targetSdkVersion="23"
添加到这一行时,每次 listProviders
都是一个空列表。因此我无法访问位置提供程序。我做错了什么?
我已经在三星 galaxy S5 上进行了测试,即 Android 6.0.1(API 级别 23)。
解决方法
-
为请求代码声明一个 int 变量。
Traceback (most recent call last): File "D:\xxxxx\all_the_program.py",line 163,in <module> if audio['TXXX:SERIES'].text[0] is None: File "D:\xxxxx\venv\lib\site-packages\mutagen\_util.py",line 537,in __getitem__ return self.__dict[key] Traceback (most recent call last): File "D:\xxxxx\all_the_program.py",in <module> if not audio['TXXX:SERIES'].text[0]: File "D:\xxxxxx\venv\lib\site-packages\mutagen\_util.py",in __getitem__ return self.__dict[key] KeyError: 'TXXX:SERIES'
-
使用您需要的权限名称声明一个字符串。
private static final int REQUEST_CODE_PERMISSION = 2;
-
下一步 检查 onCreate 方法的运行时权限条件,
String mPermission = Manifest.permission.ACCESS_FINE_LOCATION,
-
现在声明 onRequestPermissionsResult 方法来检查请求代码,
try { if (ActivityCompat.checkSelfPermission(this,mPermission) != MockPackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this,mPermission,REQUEST_CODE_PERMISSION); // If any permission above not allowed by user,this condition will execute every time,else your else part will work } } catch (Exception e) { e.printStackTrace(); }
如果您声明了任何危险权限,并且您的应用安装在运行 Android 6.0(API 级别 23)或更高版本的设备上,则您必须在运行时按照the steps in this guide
请求危险权限