個人筆記(第六篇)週六特別篇(也就是說很短)關於百度地圖定位權限的動態添加

啊,好煩,這個版本升級真的煩,

幾天主要是說一下關於百度地圖定位的問題,之前我發過一個了,定位以及申請的過程我就不說了,有興趣的可以看看,

關於申請key的方法點擊打開鏈接

關於地圖接入的一個完整的DEMO(出處爲

http://blog.csdn.net/android_for_james/article/details/51533511

好了,接下來說正事。經過以上兩個教程之後,相信都已經把地圖給做出了,並且完美運行了,但是,重點來了,這個只支持6.0以下的版本,也就是說,高於這個版本的手機是不能運行的,只有藍屏。(雖然模擬器沒問題吧,但是我們需要的是真實的啊),然後各種找人查資料。終於明白了。在高於6.0以上的版本中,你的地圖定位權限,需要動態添加,

大概步驟如此鏈接我是鏈接

總的來說就是權限需要動態添加了,不能在xml裏面來寫了。需要動態添加了。

大致就是怎麼說呢,你把這些代碼直接添加到之前的MapActivity裏面就可以用了,只需要在手機上啓動的第一次允許權限就可以了,下次進入使用不在需要

private static final int BAIDU_READ_PHONE_STATE =100;
if (Build.VERSION.SDK_INT>=23){
    showContacts();
}else{
    init();//init爲定位方法
}
public void showContacts(){
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
            != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(getApplicationContext(),"沒有權限,請手動開啓定位權限",Toast.LENGTH_SHORT).show();
        // 申請一個(或多個)權限,並提供用於回調返回的獲取碼(用戶定義)
        ActivityCompat.requestPermissions(MapActivity.this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_PHONE_STATE}, BAIDU_READ_PHONE_STATE);
    }else{
        init();
    }
}
//Android6.0申請權限的回調方法
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        // requestCode即所聲明的權限獲取碼,在checkSelfPermission時傳入
        case BAIDU_READ_PHONE_STATE:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // 獲取到權限,作相應處理(調用定位SDK應當確保相關權限均被授權,否則可能引起定位失敗)
                init();
            } else {
                // 沒有獲取到權限,做特殊處理
                Toast.makeText(getApplicationContext(), "獲取位置權限失敗,請手動開啓", Toast.LENGTH_SHORT).show();
            }
            break;
        default:
            break;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章