問(wèn)題描述:使用小米手機(jī)動(dòng)態(tài)獲取權(quán)限后都能請(qǐng)求到wifi信息敬特,但是華為手機(jī)獲取不到鸡号。
使用RxPermissions去動(dòng)態(tài)獲取權(quán)限,小米手機(jī)可以拿到wifi信息局义,就是華為手機(jī)不行气嫁,代碼如下:
RxPermissions rxPermission = new RxPermissions((Activity) context); rxPermission.requestEach(Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION)//多個(gè)權(quán)限用","隔開(kāi)
.subscribe(new Consumer<Permission>() {
@Override
public void accept(Permission permission) throws Exception {
if (permission.granted) {
//當(dāng)所有權(quán)限都允許之后当窗,返回true
//華為手機(jī)允許權(quán)限直接走這里了,但是獲取不到wifi信息
} else if (permission.shouldShowRequestPermissionRationale) {
// 用戶拒絕了該權(quán)限寸宵,沒(méi)有選中『不再詢問(wèn)』(Never ask again),那么下次再次啟動(dòng)時(shí)崖面。還會(huì)提示請(qǐng)求權(quán)限的對(duì)話框
// Log.d(TAG, permission.name + " is denied. More info should be provided.");
} else {
// 用戶拒絕了該權(quán)限,而且選中『不再詢問(wèn)』
}
}
});
去華為手機(jī)設(shè)置的權(quán)限里想打開(kāi)定位權(quán)限梯影,也進(jìn)不了定位權(quán)限設(shè)置巫员。沒(méi)辦法,就是使用
Intent intent =new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
去查看一下甲棍,果然定位權(quán)限沒(méi)有開(kāi)啟简识。郁悶呀,為什么動(dòng)態(tài)請(qǐng)求權(quán)限允許后沒(méi)有打開(kāi)這個(gè)定位權(quán)限呢!
然后我就做如下處理了:
RxPermissions rxPermission = new RxPermissions((Activity) context); rxPermission.requestEach(Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION)//多個(gè)權(quán)限用","隔開(kāi)
.subscribe(new Consumer<Permission>() {
@Override
public void accept(Permission permission) throws Exception {
if (permission.granted) {
//當(dāng)所有權(quán)限都允許之后七扰,返回true
LocationManager locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
boolean isOpen = locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M&&!isOpen) {
//華為手機(jī)如果沒(méi)有開(kāi)定位權(quán)限是獲取不到wifi信息的奢赂。RxPermissions對(duì)華為手機(jī)定位權(quán)限請(qǐng)求沒(méi)啥反應(yīng),那就跳轉(zhuǎn)到設(shè)置手動(dòng)打開(kāi)
Intent intent =new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
context.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
} else if (permission.shouldShowRequestPermissionRationale) {
// 用戶拒絕了該權(quán)限,沒(méi)有選中『不再詢問(wèn)』(Never ask again),那么下次再次啟動(dòng)時(shí)颈走。還會(huì)提示請(qǐng)求權(quán)限的對(duì)話框
// Log.d(TAG, permission.name + " is denied. More info should be provided.");
} else {
// 用戶拒絕了該權(quán)限膳灶,而且選中『不再詢問(wèn)』
}
}
});
這個(gè)坑爬了很久,特意分享出來(lái)立由,希望能幫助到你轧钓!