2016-02-25 359 views
4

我的Android应用程序需要请求位置服务权限。我这样做有:onRequestPermissionsResult立即返回拒绝的权限

ActivityCompat.requestPermissions(this, new String[]{ 
          Manifest.permission.ACCESS_COARSE_LOCATION}, 
          REQUEST_CODE_ACCESS_COARSE_LOCATION); 

但是,这被称为后,立即onRequestPermissionsResult与权限被拒绝立即返回:

@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case REQUEST_CODE_ACCESS_COARSE_LOCATION: { 

     } 
    } 
} 

的许可清单中列出:

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

我也清除缓存以防止用户以前拒绝任何影响此操作的拒绝。

我期待一个对话框弹出请求用户授予或拒绝位置服务的权限,但它不显示。

+0

我也有同样的问题,但我拼写正确的权限。这种行为的任何其他原因? @AndroidDev –

+0

我们还在等待答案... @AndroidDev –

回答

3

变化:

<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/> 

到:

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

的权限为 “粗” 的位置数据(即,不细粒度),而不是 “课程” 的位置数据(例如,举办一些大学课程的地方)。

+0

奇怪的是,我遇到另一个SO帖子,也表明拼写错误,所以我确实检查了拼写,但它仍然超过了我。 :-( – AndroidDev

+0

@AndroidDev:可能会更糟糕,你可以拼写成'COERSE'。:-) – CommonsWare

0
private int PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 100; 
private void checkPermission() { 
    if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) 
      != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(newString[{Manfest.permission.ACCESS_COARSE_LOCATION}, 
        PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION); 
     } else { 
      doShowLocation(); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      int[] grantResults) { 
     if (requestCode == PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      showContacts(); 
    } 
    } 
+0

我正在那样做。为了保持简单,我从文章中删除了这些内容。但是这个代码运行在最新版本的棉花糖上。 – AndroidDev

+0

有很多事情要注意,并且还要放置super.onRequestPermissionsResult(requestCode,permissions,grantResults); – suneall01