国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 6.0以上權(quán)限拒絕打開權(quán)限設(shè)置界面的解決方法

2019-10-21 21:44:11
字體:
供稿:網(wǎng)友

本人使用小米手機,打開qq或者微信的時候,某個權(quán)限拒絕的話,會提示你開啟,點擊開啟會跳轉(zhuǎn)到app的權(quán)限設(shè)置界面,當(dāng)然了,這是國內(nèi)系統(tǒng)深層定制的原因,也就是說這個界面原聲的android沒有的!這里以小米和魅族作為示例講解如何讓用戶手動打開權(quán)限,當(dāng)然了如果是原聲的android就讓他跳轉(zhuǎn)到應(yīng)用的詳情設(shè)置頁面(有點坑,因為普通用戶還是不知道怎么整)。

參考了很多零零碎碎的東西,網(wǎng)址已經(jīng)找不到了。。。。。。

ok,第一步是跳轉(zhuǎn)到系統(tǒng)的界面,下面基本上可以從9開始考慮了,可以簡化。

String SCHEME = "package";  //調(diào)用系統(tǒng)InstalledAppDetails界面所需的Extra名稱(用于Android 2.1及之前版本)  final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";  //調(diào)用系統(tǒng)InstalledAppDetails界面所需的Extra名稱(用于Android 2.2)  final String APP_PKG_NAME_22 = "pkg";  //InstalledAppDetails所在包名  final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";  //InstalledAppDetails類名  final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";   Intent intent = new Intent();  final int apiLevel = Build.VERSION.SDK_INT;  if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口   intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);   Uri uri = Uri.fromParts(SCHEME, getPackageName(), null);   intent.setData(uri);  } else { // 2.3以下,使用非公開的接口(查看InstalledAppDetails源碼)   // 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。   final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22     : APP_PKG_NAME_21);   intent.setAction(Intent.ACTION_VIEW);   intent.setClassName(APP_DETAILS_PACKAGE_NAME,     APP_DETAILS_CLASS_NAME);   intent.putExtra(appPkgName, getPackageName());  }  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  startActivity(intent);

第二個,miui,首先你得判斷是miui,親自測試,MIUI7穩(wěn)定版,MIUI8開發(fā)板本可行,工具類下面會提供下載

if (CheckPhoneSystemUtils.isMIUI()) {   MLog.i("產(chǎn)品/硬件的制造商小米:");   intent.setAction("miui.intent.action.APP_PERM_EDITOR");   intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");   intent.putExtra("extra_pkgname", getPackageName());   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   try {    startActivity(intent);   } catch (Exception e) {    e.printStackTrace();    Toast.makeText(MediaRecoderService.this, "只有MIUI才可以設(shè)置哦", Toast.LENGTH_SHORT).show();   }  }

第三個,flyme(由于沒有flyme機子),采用的云手機測試的

else if (CheckPhoneSystemUtils.isFlyme()) {   intent.setAction("com.meizu.safe.security.SHOW_APPSEC");   intent.addCategory(Intent.CATEGORY_DEFAULT);   intent.putExtra("packageName", getPackageName());   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   try {    startActivity(intent);   } catch (Exception e) {    e.printStackTrace();    Toast.makeText(MediaRecoderService.this, "只有Flyme才可以設(shè)置哦", Toast.LENGTH_SHORT).show();   }  } 

下面是工具類:BuildProperties

public class BuildProperties { private final Properties properties;  private BuildProperties() throws IOException {  properties = new Properties();  properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop"))); }  public boolean containsKey(final Object key) {  return properties.containsKey(key); }  public boolean containsValue(final Object value) {  return properties.containsValue(value); }  public Set<Map.Entry<Object, Object>> entrySet() {  return properties.entrySet(); }  public String getProperty(final String name) {  return properties.getProperty(name); }  public String getProperty(final String name, final String defaultValue) {  return properties.getProperty(name, defaultValue); }  public boolean isEmpty() {  return properties.isEmpty(); }  public Enumeration<Object> keys() {  return properties.keys(); }  public Set<Object> keySet() {  return properties.keySet(); }  public int size() {  return properties.size(); }  public Collection<Object> values() {  return properties.values(); }  public static BuildProperties newInstance() throws IOException {  return new BuildProperties(); }

CheckPhoneSystemUtils

 private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code"; private static final String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name"; private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";  /**  * 檢測MIUI  *  * @return  */ public static boolean isMIUI() {  try {   final BuildProperties prop = BuildProperties.newInstance();   return prop.getProperty(KEY_MIUI_VERSION_CODE, null) != null || prop.getProperty(KEY_MIUI_VERSION_NAME, null) != null || prop.getProperty(KEY_MIUI_INTERNAL_STORAGE, null) != null;  } catch (final IOException e) {   return false;  } }  /**  * 檢測Flyme  *  * @return  */ public static boolean isFlyme() {  try { // Invoke Build.hasSmartBar()   final Method method = Build.class.getMethod("hasSmartBar");   return method != null;  } catch (final Exception e) {   return false;  } }

以上這篇Android 6.0以上權(quán)限拒絕打開權(quán)限設(shè)置界面的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 扶余县| 辽源市| 海门市| 松溪县| 基隆市| 巫山县| 荔浦县| 靖江市| 大方县| 都昌县| 高台县| 印江| 民县| 奉化市| 新巴尔虎右旗| 海伦市| 多伦县| 丰城市| 瓦房店市| 辽阳县| 萨嘎县| 江城| 利辛县| 静乐县| 福建省| 蓝山县| 大兴区| 古田县| 镇康县| 宜城市| 裕民县| 凤冈县| 梨树县| 泗阳县| 江山市| 吉木乃县| 来宾市| 晋城| 余干县| 渭源县| 天长市|