2016-03-16 96 views
1

我使用這兩個權限在我的應用程序Android的位置的權限

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

我已經加入清單中的權限。然而,當我調試到我的手機,我嘗試使用下面的函數來檢查權限:

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
     Log.i("permission","done"); 
    } 
    else 
    { 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 
        MY_PERMISSION_ACCESS_COARSE_LOCATION); 
     } 
     // The ACCESS_FINE_LOCATION is denied, then I request it and manage the result in 
     // onRequestPermissionsResult() using the constant MY_PERMISSION_ACCESS_FINE_LOCATION 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(this, 
        new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, 
        MY_PERMISSION_ACCESS_FINE_LOCATION); 
     } 

    } 

應用程序將進入第一個IF語句,而不是從用戶申請許可。 我以前沒有授予此應用程序的任何權限。 即使我只是在我的手機中調試並安裝應用程序,爲什麼權限會變成GRANTED?

+0

由於運行時權限是添加在棉花糖而不是以前的版本,所以如果你已經在清單中添加權限,它會自動授予權限,甚至不會在運行時詢問權限,除非它是棉花糖設備 –

+0

你'正在測試Android M,對吧? –

+0

編號在銀河注5進行測試。 –

回答

0

因爲運行時權限是添加到棉花糖而不是以前的版本,所以如果你已經在清單中添加權限,它會自動授予權限,甚至不會在運行時詢問權限,除非它是棉花糖設備。

+0

我正在測試Galaxy Note 5.我如何獲得請求權限對話框以實際請求權限? –

+0

我試圖刪除android清單中的,並且請求對話框仍然不會彈出。 –

+0

我還沒有試過在Android M下面詢問運行時權限。如果在Manifest中聲明瞭權限,Android會自動管理權限。 –