啊,好煩,這個版本升級真的煩,
幾天主要是說一下關於百度地圖定位的問題,之前我發過一個了,定位以及申請的過程我就不說了,有興趣的可以看看,
關於申請key的方法點擊打開鏈接
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; } }