我也在运行时使用了清单文件中的权限和权限。 但是我仍然得到错误
“ LocationManager.requestLocationUpdates所需的缺少权限:android.permission.ACCESS_COARSE_LOCATION或android.permission.ACCESS_FINE_LOCATION 检查信息:此检查将扫描您的代码和库,并查看正在使用的API,并根据访问这些API所需的一组权限进行检查。如果使用这些API的代码在运行时被调用,则程序将崩溃。此外,对于可撤消的权限(使用targetSdkVersion 23),如果用户在运行时拒绝许可请求,则还必须准备客户端代码来处理引发异常的调用。 问题ID:MissingPermission”
我正在使用Android Studio 3.4.1
清单文件:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在活动中:
public void getLocation()
{
try {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 5000, 5, this);
}
catch(SecurityException e) {
e.printStackTrace();
}
}
在onCreate()方法中:
if (ContextCompat.checkSelfPermission(getApplicationContext(),android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(),android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.ACCESS_COARSE_LOCATION}, 101);
}
请帮帮我。我浏览了与此相关的帖子,但对我没有任何帮助。
答案 0 :(得分:0)
尝试以下操作,
@TargetApi(23)
public void getLocation()
{
if ( Build.VERSION.SDK_INT >= 23 &&
ContextCompat.checkSelfPermission( context, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission( context, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return ;
}
try {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 5000, 5, this);
}
catch(SecurityException e) {
e.printStackTrace();
}
}