簡體   English   中英

Android模擬器上未授予權限

[英]No permissions granted on Android emulator

我寫了一個簡單的Hello World應用程序來調試我遇到的一些權限問題。

問題是我的應用無法獲得使用任何內容的權限。 是的,我正在使用

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

是的,我把那個標簽放在AndroidManifest.xml中的<manifest>

如果我從清單中刪除所有<uses-permission>標記並轉到Settings > Apps > TestApp ,則表示沒有請求權限

如果我重新放入標簽,則說沒有授予權限

如果我在實際設備上進行調試,它會說權限存在,所以看起來這個問題只發生在模擬器上! 但是,當我使用相同的模擬器從developer.android.com運行android-play-location/LocationUpdates項目時它也有效,所以可能我的項目設置有問題。

有任何想法嗎?

  • IDE:Android Studio
  • 虛擬設備:Nexus_5_API_23
  • 操作系統:客戶端Ubuntu 14.04在主機OS X Yosemite上運行(VMWare Fusion)

如果我重新放入標簽,則說沒有授予權限

這是因為您在Android 6.0上進行測試,而您的targetSdkVersion設置為23。

如果我在實際設備上進行調試,它會說權限存在,所以看起來這個問題只發生在模擬器上!

不,它僅在Android 6.0+上發生。

但是,當我使用相同的模擬器從developer.android.com運行android-play-location / LocationUpdates項目時它也有效,所以可能我的項目設置有問題。

該項目可能有一個低於23的targetSdkVersion

ACCESS_FINE_LOCATIONAndroid 6.0運行時權限系統管理 更新您的應用程序以使用該系統,或將targetSdkVersion降至23以下,直到您准備好這樣做。

如果你在M上運行,只需要請求位置許可

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && getActivity().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
        requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION);
}else{
    //Do things as usual
}

等待結果

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] result){
    super.onRequestPermissionsResult(requestCode, permissions, result);


    if(requestCode == LOCATION_PERMISSION && result[0] == PackageManager.PERMISSION_GRANTED){
        //do things as usual init map or something else when location permission is granted
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM