1. 程式人生 > >Android 23使用定位許可權報錯Call requires permission which may be rejected by user

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

yumRequires: 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.一