我正在嘗試獲取用戶的最後一個位置。爲此,我已經在manifest xml文件中聲明瞭以下權限。清單中未識別權限聲明
<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" />
但在這個代碼,它不斷出現以下錯誤:
Code should explicitly check to see if permission is available.
我沒有看到這一點,但我無論如何增加了以下檢查。
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
這會阻止顯示錯誤,但是當我運行應用程序時,它最終返回。我缺少什麼許可?過了一段時間,因爲我在Android上工作,我不記得要處理這些額外的檢查。明確的許可聲明已足夠。請諮詢我缺少的東西。
代碼:
LocationManager locationManager;
String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(new Criteria(), false);
Location location = null;
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("location", "returned"); // This log will occur
return; //return will occur
}
location = locationManager.getLastKnownLocation(provider); //this is the line that requires permission
Log.i("location", "This log will not occur");
}
你運行什麼android版本。請注意,在Android 6中更改權限,請閱讀文檔。 – Olayinka
@Olayinka我目前使用API 23. – JasSy