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

首頁 > 系統 > Android > 正文

Android 6.0以上權限拒絕打開權限設置界面的解決方法

2019-12-12 00:38:46
字體:
來源:轉載
供稿:網友

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

參考了很多零零碎碎的東西,網址已經找不到了。。。。。。

ok,第一步是跳轉到系統的界面,下面基本上可以從9開始考慮了,可以簡化。

String SCHEME = "package";  //調用系統InstalledAppDetails界面所需的Extra名稱(用于Android 2.1及之前版本)  final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";  //調用系統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穩定版,MIUI8開發板本可行,工具類下面會提供下載

if (CheckPhoneSystemUtils.isMIUI()) {   MLog.i("產品/硬件的制造商小米:");   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才可以設置哦", 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才可以設置哦", 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以上權限拒絕打開權限設置界面的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 搜索| 大同市| 揭东县| 渝中区| 梁平县| 渝中区| 松滋市| 马鞍山市| 安丘市| 修水县| 金阳县| 平塘县| 海口市| 怀化市| 湘乡市| 淮南市| 盖州市| 亚东县| 郴州市| 鄂州市| 鹿泉市| 万盛区| 宁河县| 钦州市| 漾濞| 普陀区| 恩施市| 监利县| 临朐县| 正定县| 鹤岗市| 葫芦岛市| 杭州市| 抚顺市| 昭平县| 固安县| 毕节市| 镶黄旗| 盖州市| 城市| 都安|