【问题标题】:Missing permissions required by LocationManager.requestLocationUpdates缺少 LocationManager.requestLocationUpdates 所需的权限
【发布时间】:2019-07-20 09:07:03
【问题描述】:

我也使用了清单文件中的权限和运行时的权限。 但我仍然得到错误

“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);
    }

请帮帮我。我浏览过与此相关的帖子,但对我一点帮助都没有。

【问题讨论】:

  • 您是否尝试过执行此SO answer 中的所有步骤?
  • 是的,我试过了,但还是不行

标签: android locationlistener


【解决方案1】:

试试下面的,

@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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2022-10-18
    • 2022-08-13
    • 2019-08-11
    • 2020-02-07
    • 2019-04-17
    相关资源
    最近更新 更多