Android 23使用定位許可權報錯Call requires permission which may be rejected by user
報錯了“Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission
) or explicitly handle a potential SecurityException
”
許可權問題
使用時,需要檢查使用者是否授權
參考連結1:http://blog.5ibc.net/p/62176.html
參考連結2:http://blog.csdn.net/qq_27278679/article/details/51095770
程式碼解決(親測可用):
private void getlocationGps(){
//此處的判定是主要問題,API23之後需要先判斷之後才能呼叫locationManager中的方法
//包括這裡的getLastKnewnLocation方法和requestLocationUpdates方法
if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED) {
//獲取定位服務
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//獲取當前可用的位置控制器
List<String> list = locationManager.getProviders(true);
if (list.contains(LocationManager.GPS_PROVIDER)) {
//是否為GPS位置控制器
provider = LocationManager.GPS_PROVIDER;
} else if (list.contains(LocationManager.NETWORK_PROVIDER)) {
//是否為網路位置控制器
provider = LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(this, "請檢查網路或GPS是否開啟",
Toast.LENGTH_LONG).show();
return;
}
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
//獲取當前位置,這裡只用到了經緯度
String string = "緯度為:" + location.getLatitude() + ",經度為:"
+ location.getLongitude();
}
//繫結定位事件,監聽位置是否改變
//第一個引數為控制器型別第二個引數為監聽位置變化的時間間隔(單位:毫秒)
//第三個引數為位置變化的間隔(單位:米)第四個引數為位置監聽器
locationManager.requestLocationUpdates(provider, 2000, 2, locationListener);
}
}
public LocationListener locationListener=new LocationListener() {
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
//關閉時解除監聽器
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
//api23需要這樣寫
if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED) {
if (locationManager != null) {
locationManager.removeUpdates(locationListener);
}
}
}
相關推薦
Android 23使用定位許可權報錯Call requires permission which may be rejected by user
報錯了“Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with ch
使用GPS提示的問題是Call requires permission which may be rejected by user: code should explicitly check to s
1.在使用GPS的時候提示Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with
Qt Creator無法debug,報錯:The selected debugger may be inappropriate for the inferior. Examining symbols and setting breakpoints by file name and line numb
看到這個報錯我是絕望的 解決:下載windows sdk win10 sdk 只安裝Debugging Tools for Windows 開啟 工具-選項-Kits 安裝sdk成功後我們可以看到 已經檢測到了我們安裝的cdb 開啟
php 遇到報錯 Call to a member function fetch_object()
while var_dump _array dmi obj array php 結果 query 1.檢查語法 ,沒問題 <?php require "fun.php"; $kc_sql="select distinct KCM from KCB"; /
Failed to resolve:com.android.support:appcompat-v7:報錯處理
rip roi 文件 ger 兩個 更新 mpat 再看 註釋 既然是版本問題,那就的先去了解自己的電腦安裝的SDK工具版本,點開SDK Manager圖標,然後選中Updates就可以看到了 這裏我的 sdk 工具版本就是26.1.1了 報錯是因為自己的a
yum報錯:Requires: libc.so.6(GLIBC_2.17)(64bit)
發現 hat6 type ges red 技術分享 搜索 viewer team 在安裝最新版teamviewer即yum install teamviewer_13.1.8286.x86_64.rpm的過程中,出現報錯 Error: Package: teamviewer
關於Android Studio 3.0 報錯 com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
當你使用android外掛for gradle 3.0時,會預設啟用Aapt2。 Android的Gradle 3.0外掛預設啟動Aapt2,目的是為了改進增量資源的處理。aapt2 適配之資源 id 固定 在網上大部分給出的解決方案 都是在工程目錄下開啟gradle.prop
【Android】AS報錯:Configuration on demand is not supported by the current version of the Android Gradle
轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80218299 【錯誤】 Configuration on demand is not supported by the current version o
織夢自定義圖片欄位報錯Call to a member function GetInnerText()
織夢程式當你添加了自定義圖片欄位時,前臺開啟當前欄目列表就會出現 Fatal error: Call to a member function GetInnerText() on string in include aglibchannelimg.lib.php on line 51 後臺出現 Fata
Homebrew安裝軟體出現無寫入許可權報錯的解決方案
系統版本 macOS 10.14 情景 使用 brew install wget 指令 報錯 Error: The following directories are not writable by your user: /usr/local/sbin /usr/lo
macOS High Sierra python pip 安裝許可權報錯解決
問題背景 需要使用Python的 matplotlib模組,於是使用 pip install matplotlib進行安裝,安裝時報錯:OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packa
Android Studio打包時候報錯:app:lintVitalRelease
apply plugin: 'com.android.application' android { lintOptions { checkReleaseBuilds false abortOnError false } compileSdkV
shiro訪問許可權報錯:getPathWithinApplication(servletRequest) == /error
業務:post資料到 /aaa/bbb/cc,然後被shiro攔截,輸出getPathWithinApplication(servletRequest) == "/error" getPathWithinApplication(servletRequest) //當前
【我的Android進階之旅】使用Retrofit進行Post請求報錯: @Field parameters can only be used with form encoding.
一、問題描述 今天隨手寫一個post請求的時候,報錯了,如下所示: 09-28 11:11:28.155 10547-10547/com.xtc.watch E/Fatal: {CrashHandler.saveAndPrintLog-58} jav
swift 報錯 Call can throw, but it is not marked with 'try' and the error is not handled
在開發中使用正則表示式時報了這樣的問題:Call can throw, but it is not marked with 'try' and the error is not handled,即: let regex:NSRegularExpression = NSRegularExpression(pa
虛擬機器最高許可權報錯
點選VM-Install VMware Tools在桌面上出現一張光碟包含3個檔案,分別為manifest.txt;Vmware-tools-版本號.rpm和Vmware-tools-版本號.tar.gz 在此安裝tar.gz包 (1)將Vmware-tools-版
Plugin with id 'com.android.application' not found.報錯
從github或第三方Demo中獲取的專案匯入到AndroidStudio中報錯Plugin with id 'com.android.application' not found.;今天匯入一個訊飛的Demo看專案的目錄明顯不對,感覺少了個build.gradle;只有Mo
Android Studio 三方引用報錯 ,但是專案可以執行 解決方案
一、自帶清除快取 一、自帶清除快取 點選AndroidStudio選單File -> Invalidate Caches/Restar… ,在彈出的對話方塊中點選Invalidate and Restar 。等待AS清理並自動重啟。 二、刪除use
Android Studio 建立BottomNavigationActivity報錯的解決辦法
使用AS建立BottomNavigationActivity的時候,會出現 Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'. Could not determine artif
配置SVN許可權報錯了,如何修改
報錯圖片: 廢了3個小時才搞定找到原因: 1.注意更改svnserve.conf配置檔案需要重啟svn,更高authz和passwd不需要重啟svn。重啟方法:pkill svnserve(killall svnserve) 然後重新svnserve -d -r 專案目錄即可。 2.一