當前位置:首頁 » 安卓系統 » android獲取定位許可權

android獲取定位許可權

發布時間: 2023-05-18 10:26:15

㈠ Android 6.0 掃描不到 Ble 設備需開啟位置許可權

最近總是有用戶反饋說APP掃描不到設備,讓我很費解了一段時間,尤其是華為和OPPO,公司還專門買了這款手機,然後測試沒問題,直到一個偶然,我把手機定位給關了,才發現這個問題,Android 6.0 掃描設備需開啟位置許可權,用戶突然一天把定位給關了,我們在掃描之前又沒檢測,唉,一個邏輯不嚴謹就會出現各種問題,現在記錄一下

許可權獲取

<uses-permission android:name="android.permission.BLUETOOTH"/> 使用藍牙所需要的許可權

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 使用掃描和設置藍牙的許可權(申明這一個許可權必須申明上面一個許可權)

在Android5.0之前,是默認申請GPS硬體功能的。而在Android 5.0 之後,需要在manifest 中申明GPS硬體模塊功能的使用。

<!-- Needed only if your app targets Android 5.0 (API level 21) or higher. -->

    <uses-feature android:name="android.hardware.location.gps" />

在 Android 6.0 及以上,還需要打開位置許可權。如果應用沒有位置許可權,藍牙掃描功能不能使用(其它藍牙操作例如連接藍牙設備和寫入數據不受影響)

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

除了上面的設置之外,如果想設置設備只支持 BLE,可以加上下面這句話

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

同樣,如果不想添加 BLE 的支持,那麼可以設置 required="false"

然後可以在運行時判斷設備是否支持 BLE,

// Use this check to determine whether BLE is supported on the device. Then

    // you can selectively disable BLE-related features.

    if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {

        Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();

        finish();

    }

打開定位 (Location)

首先檢查定位是否打開,可以像下面這樣操作:

/**

* Location service if enable

*

* @param context

* @return location is enable if return true, otherwise disable.

*/

public static final boolean isLocationEnable(Context context) {

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    boolean networkProvider = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

    boolean gpsProvider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

    if (networkProvider || gpsProvider) return true;

    return false;

}

如果定位已經打開,可以搜索到 ble 設備;如果定位沒有打開,則需要用戶去打開,像下面這樣:

private static final int REQUEST_CODE_LOCATION_SETTINGS = 2;

private void setLocationService() {

    Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

    this.startActivityForResult(locationIntent, REQUEST_CODE_LOCATION_SETTINGS);

}

進入定位設置界面,讓用戶自己選擇是否打開定位。選擇的結果獲取:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE_LOCATION_SETTINGS) {

        if (isLocationEnable(this)) {

            //定位已打開的處理

        } else {

            //定位依然沒有打開的處理

        }

    } else super.onActivityResult(requestCode, resultCode, data);

}

安卓手機怎麼查看哪些軟體獲取了定位手機許可權

安卓手機怎麼芹禪尺查看哪些軟體獲取了定位手機許可權呢?下面我來教大家。

  • 01

    首先,我們打嫌高開我們的手機,然後我們點擊設置;

  • 02

    彈出的界面,我們點擊應用和通知;

  • 03

    彈出的界面,我們點擊許可權管理;

  • 04

    彈出的界面,我們點擊許可權;

  • 05

    彈出的界面,襲裂我們點擊讀取位置信息;

  • 06

    在裡面我們就可以看到具體有哪些軟體應用獲取了定位手機許可權了,如圖所示。

㈢ 在android studio 中 獲取的經緯度,沒有顯示,logcat說缺少定位許可權是什麼原因

<飢枯uses permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission..ACCESS_FINE_LOCATION" />
6.0以上可能需要動態爛衫洞添加塌飢許可權

㈣ android應用獲取定位,怎麼判斷操作結果

在Android中得到當前位置的步驟 1.在AndroidManifest.xml中聲明許可權android.permission.ACCESS_FINE_LOCATION(或者android.permission.ACCESS_COARSE_LOCATION)

2.聲明並實例化一個LocationManager對象 這個類提供了關於獲取位置信息的服務,用於管理Android的定位服務。這個類允許應用定期的更新地理位置信息,同時允許當到達指定地點時候激活相關的Intent。LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

3.聲明並設置Criteria對象。 這個類是用來選擇合適的provider的,他設置了一些條件,通過對這些條件進行篩鬧咐選,系統得到最優的provider對象。條件有:精度,耗電量,海拔,亂彎跡方位,速度以及付費情況等。Criteria criteria=new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); //精度要求:
ACCURACY_FINE(高)ACCURACY_COARSE(低)
criteria.setAltitudeRequired(false); // 不要求海拔信息
criteria.setBearingAccuracy(Criteria.ACCURACY_HIGH); //方位信息的精度要求:
ACCURACY_HIGH(高)ACCURACY_LOW(低)
criteria.setBearingRequired(false); // 不要求方位信息
criteria.setCostAllowed(true); // 是否允許付費
criteria.setPowerRequirement(Criteria.POWER_LOW); // 對電量的要求嘩並 (HIGH、MEDIUM)

㈤ 為什麼Android應用會多次請求定位許可權

安裝Android應用會提示各自許可權。一個眾所周知、也令人不解的現象是許多中國開發的Android應用熱衷要求超出其需求的許可權,如一個地理位置信息服務需要訪問友晌GPS等信息我們能理解,但要訪問電話呼叫就令人不解了;一個視頻播放應用訪問防休眠功能能理解談告羨,但為什麼要含拍讀取系統日誌?亞馬遜應用商店一項值得稱贊的功能是公開了應用所需要的許可權,不需要你下載安裝後才知道它需要哪些許可權,查看一下國內應用的許可權需求,你可能會覺得許多開發商都在從事個人信息收集業務,如:PPTV網路電視、新浪視眼都需要訪問較低級別的系統日誌文件--系統日誌包括了時間戳和所有活動信息,你可以知道Android用戶在什麼時候做了什麼運行了什麼程序。

㈥ android使用高德定位sdk獲取的城市名稱怎樣讓其他的界面進行調用

第一步,我們需要下載SDK
第二步,解壓後,將jar包放進libs文件夾中,並加入環境變數中。

第三步,在AndroidManifest.xml文件中配置許可權:
<!--用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--用於訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--用於獲取運營商信息,用於支持提供運營商信息相關的介面-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--用於訪問wifi網路信息,wifi信息會用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--用於獲取wifi的獲取許可權,wifi信息會用來進行網路定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!--用於訪問網路,網路定位需要上網-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--用於讀取手機當前的狀態-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--用於寫入緩存數據到擴展存儲卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--用於申請調用A-GPS模塊-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>

並在application標簽中添加:
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你申請的key" />
<service android:name="com.amap.api.location.APSService" />

第四步,測試代碼:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;

public class MainActivity extends AppCompatActivity {
//聲明AMapLocationClient類對象
public AMapLocationClient mLocationClient = null;
//聲明定位回調監聽器
public AMapLocationListener mLocationListener = new MyAMapLocationListener();
//聲明AMapLocationClientOption對象
public AMapLocationClientOption mLocationOption = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}

private void init() {
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//設置定位回調監聽
mLocationClient.setLocationListener(mLocationListener);
//初始化AMapLocationClientOption對象
mLocationOption = new AMapLocationClientOption();
//設置定位模式為AMapLocationMode.Hight_Accuracy,高精度模式。
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//獲取一次定位結果:
//該方法默認為false。
mLocationOption.setOnceLocation(false);

//獲取最近3s內精度最高的一次定位結果:
//設置setOnceLocationLatest(boolean b)介面為true,啟動定位時SDK會返回最近3s內精度最高的一次定位結果。如果設置其為true,setOnceLocation(boolean b)介面也會被設置為true,反之不會,默認為false。
mLocationOption.setOnceLocationLatest(true);
//設置是否返回地址信息(默認返回地址信息)
mLocationOption.setNeedAddress(true);
//設置是否允許模擬位置,默認為false,不允許模擬位置
mLocationOption.setMockEnable(false);
//關閉緩存機制
mLocationOption.setLocationCacheEnable(false);
//給定位客戶端對象設置定位參數
mLocationClient.setLocationOption(mLocationOption);
//啟動定位
mLocationClient.startLocation();

}

private class MyAMapLocationListener implements AMapLocationListener {

@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
Log.e("位置:", aMapLocation.getAddress());
} else {
//定位失敗時,可通過ErrCode(錯誤碼)信息來確定失敗的原因,errInfo是錯誤信息,詳見錯誤碼表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
}
}
}
}
}

㈦ android 怎麼判斷定位許可權

PackageManager pm = getPackageManager();
boolean flag = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.RECORD_AUDIO", "packageName"));
if (flag) {
//有這個許可權,做相應處理
}else { //沒有許可權
}

㈧ android 百度地圖怎麼獲取不到GPS定位

原因:
1丶檢查手機是否有明顯的碰撞痕跡,可能是由於手機進行了碰撞而導致手機的GPS損壞從而無法進行定位。有的人手機摔了之後無線網就不能用了,或者藍牙不能開,都是因為手機碰撞造成的。

2丶進入網路地圖的APP,檢查是否是最新版本的APP手機應用,如果不是,請及時進行更新,如果是經常處在wifi環境下,可以勾選wifi環境下自動更新的選項。

3丶在手機的安全中心中,查看是否給了網路地圖APP的許可權,如果沒有的話,可以打開,這樣一來,手機授權網路地圖GPS定位服務,從而使網路地圖可以定位自己的位置。

4丶檢查一下自己下的網路地圖APP是否是真正的官方授權的正版軟體。

㈨ android如何獲取地理位置

三種方式進行定位,獲取用戶位置,分別是基於基站定位, 網路定位,GPS定位。
1.基站定位(passive):這是基於網路基站進行定位的,定位的精確度在幾十米到幾千米不等,在城市中基站覆蓋率比較高,推薦使用基站定位,如果是在郊區,基站相距較遠,基站的覆蓋沒有城裡好,定位的誤差比較大。如果在郊區不推薦使用基站定位。
2.網路定位:wifi定位,網路定位
3.GPS定位:與衛星進行通信。手機中嵌入了GPS模塊(精簡版的A-GPS),通過A-GPS搜索衛星, 獲取經緯度。使用GPS的弊端是:必須站在空曠的地方,頭頂對著天空,如果雲層厚了,也會受到一定的影響。精確度:10-50米
擴展知識:
使用Android是定位必備的許可權:
< uses-permission android:name= " android.permission.ACCESS_FINE_LOCATION " /> //精確定位
<uses-permission android:name= "android.permission.ACCESS_MOCK_LOCATION" /> //模擬器
<uses-permission android:name= "android.permission.ACCESS_COARSE_LOCATION" /> //粗糙定位

//獲取定位管理對象
LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE);
String[] names=lm.getAllProviders();//獲取所有的位置提供者,一般三種

Criteria criteria=new Criteria();//查詢條件,如果設置了海拔,則定位方式只能是GPS;
criteria.setCostAllowed(true);//是否產生開銷,比如流量費
String provider=lm.getBaseProvider(criteria,true)//獲取最好的位置提供者,第二個參數為true,表示只獲取那些被打開的位置提供者

lm.requestLocationUpdates(provier,0,0,new LocationListener(){});//獲取位置。第二個參數表示每隔多少時間返回一次數據,第三個參數表示被定位的物體移動每次多少米返回一次數據。

private class MyLocationListener implements LocationListener {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override

@Override
public void onLocationChanged(Location location) {
System. out.println( "服務中位置監聽發送了變化了" );
float accuracy = location.getAccuracy(); // 精確度
double altitude = location.getAltitude(); // 海拔
double latitude = location.getLatitude(); // 緯度
double longitude = location.getLongitude(); // 經度
String locationInfo = "jing:" + longitude + ",wei:" + latitude + ",haiba:" + altitude + ",jingque:" + accuracy;
Editor edit = sp.edit();
edit.putString( "location", locationInfo);
edit.commit();
}
} public void onProviderDisabled(String provider) {

}

㈩ Android開發,剛進入時被用戶關閉定位許可權,然後怎麼又在後面打開

Activity中requestPermissions是用來再次請求許可權的,調用之前要先用checkSelfPermission檢查鉛搏許可權是否已經獲取,activity重寫onRequestPermissionsResult方法來監聽請求的結果,還有方法來判斷是否需要自己定義請求許可權的說明窗口。而且Android6.0之後許可權管理機制有變化了,有些許可權必須在代碼中去請求,你的app兼容6.0及以上的話你就要去了解這部分知識。建議你去Github上搜Nammu去看看,這個開源槐運祥庫就是處理許可權悄謹請求這些事的,你可以用這個庫來方便自己。

熱點內容
清理outlook2010緩存 發布:2025-02-13 15:43:30 瀏覽:54
ohem演算法 發布:2025-02-13 15:40:10 瀏覽:930
java編程課程 發布:2025-02-13 15:36:08 瀏覽:475
cs編譯 發布:2025-02-13 15:36:07 瀏覽:55
高級語言都要編譯解析型語言 發布:2025-02-13 15:06:32 瀏覽:304
openwrt源碼下載 發布:2025-02-13 15:01:59 瀏覽:644
linux刪除一個目錄 發布:2025-02-13 15:00:29 瀏覽:539
螞蟻存儲 發布:2025-02-13 15:00:25 瀏覽:918
腳本師傳奇 發布:2025-02-13 14:45:48 瀏覽:481
我的世界lce伺服器剪輯 發布:2025-02-13 14:40:50 瀏覽:625