1. private void toSetting() {
    Intent localIntent = new Intent();
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (Build.VERSION.SDK_INT >= 9) {
    localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
    localIntent.setData(Uri.fromParts("package", getPackageName(), null));
    }
    startActivity(localIntent);
    }
  1. /**
    * 启动app应用的信息设置
    */
    public static void startAppSettings(Context mContext) {
    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    intent.setData(Uri.parse("package:" + mContext.getPackageName()));
    mContext.startActivity(intent);
    }
  2. public static int getOsUid(Context context) {
    int uid = 0;
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    ApplicationInfo appinfo = context.getApplicationInfo();
    List<ActivityManager.RunningAppProcessInfo> run = am.getRunningAppProcesses();
    for (ActivityManager.RunningAppProcessInfo runningProcess : run) {
    if ((runningProcess.processName != null) && runningProcess.processName.equals(appinfo.processName)) {
    uid = runningProcess.uid;
    break;
    }
    }
    return uid;
    }
  3. /**
    * 获取通知栏开关的状态:分8.0系统之上和8.0系统之下
    * des:
    */
    public static boolean isNoticeEnable(Context context) {
    boolean isNoticeEnable = false;
    String pkg = context.getPackageName();
    int uid = 0x011111;//自己获取
    if (Build.VERSION.SDK_INT >= 26) {//8.0系统之上
    isNoticeEnable=isNoticeEnableV26(context, uid);
    } else {
    isNoticeEnable=isNoticeEnableV19(context, uid);
    }
    return isNoticeEnable;
    }

  4. /**
    * des:8.0之后,提供给APP适用的的NotificationManager 类中有INotificationManager对象,最终我们通过反射获取通知栏开关
    */
    private static boolean isNoticeEnableV26(Context context, int uid) {
    try {
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Method sServiceField = notificationManager.getClass().getDeclaredMethod("getService");
    sServiceField.setAccessible(true);
    Object sService = sServiceField.invoke(notificationManager);
    Method method = sService.getClass().getDeclaredMethod("areNotificationsEnabledForPackage", String.class, Integer.TYPE);
    method.setAccessible(true);
    return (boolean) method.invoke(sService, context.getPackageName(), uid);
    } catch (Exception e) {
    return true;
    }
    }

  5. /**
    * des:针对8.0之前设备,通过AppOpsManager的checkOpNoThrow方法获取。
    */
    @TargetApi(Build.VERSION_CODES.KITKAT)
    private static boolean isNoticeEnableV19(Context context, int uid) {
    try {
    String CHECK_OP_NO_THROW = "checkOpNoThrow";
    String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
    Class appOpsClass = null;
    AppOpsManager mAppOps = null;
    mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
    appOpsClass = Class.forName(AppOpsManager.class.getName());
    Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE,
    Integer.TYPE, String.class);
    Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
    int value = (Integer) opPostNotificationValue.get(Integer.class);
    return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, context.getPackageName()) == AppOpsManager.MODE_ALLOWED);
    } catch (Exception e) {
    return true;
    }
    }

  6. /**
    * 针对8.0及以上设备,发现上述方式不生效。查询系统设置源码,在NotificationBackend类中发现获取通知栏状态改到INotificationManager中了
    */
    private boolean getNotificationsBanned(String pkg, int uid) {
    try {
    final boolean enabled = sINM.areNotificationsEnabledForPackage(pkg, uid);
    return !enabled;
    } catch (Exception e) {
    Log.w(TAG, "Error calling NoMan", e);
    return false;
    }
    }

  1. /**
    * 打开允许通知的设置页(跳到的是全部通知的页面,不是很理想)
    */
    private void goToNotificationSetting(Context context) {
    Intent intent = new Intent();
    if (Build.VERSION.SDK_INT >= 26) { // android 8.0引导
    intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
    intent.putExtra("android.provider.extra.APP_PACKAGE", context.getPackageName());
    } else if (Build.VERSION.SDK_INT >= 21) { // android 5.0-7.0
  2.  intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
    intent.putExtra("app_package", context.getPackageName());
    intent.putExtra("app_uid", context.getApplicationInfo().uid);
    } else { // 其他
    intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
    intent.setData(Uri.fromParts("package", context.getPackageName(), null));
    }
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
    }

========

6.    ACTION_APPLICATION_DEVELOPMENT_SETTINGS :  // 跳转开发人员选项界面
 
           Intent intent =  new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);  
           startActivity(intent);
 
7.    ACTION_APPLICATION_SETTINGS :      // 跳转应用程序列表界面
 
           Intent intent =  new Intent(Settings.ACTION_APPLICATION_SETTINGS);  
           startActivity(intent);
       或者:
      ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS   // 跳转到应用程序界面【所有的】
 
             Intent intent =  new Intent(Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS);  
             startActivity(intent);
 
       或者:
 
       ACTION_MANAGE_APPLICATIONS_SETTINGS  ://  跳转 应用程序列表界面【已安装的】
        
             Intent intent =  new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);  
             startActivity(intent);
 
 
 
8.    ACTION_BLUETOOTH_SETTINGS  :      // 跳转系统的蓝牙设置界面
 
           Intent intent =  new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);  
           startActivity(intent);
 
9.    ACTION_DATA_ROAMING_SETTINGS :   //  跳转到移动网络设置界面
 
           Intent intent =  new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);  
           startActivity(intent);
 
10.    ACTION_DATE_SETTINGS :           //  跳转日期时间设置界面
 
            Intent intent =  new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);  
            startActivity(intent);
 
11.    ACTION_DEVICE_INFO_SETTINGS  :  // 跳转手机状态界面
    
            Intent intent =  new Intent(Settings.ACTION_DEVICE_INFO_SETTINGS);  
            startActivity(intent);
 
12.    ACTION_DISPLAY_SETTINGS  : // 跳转手机显示界面
 
            Intent intent =  new Intent(Settings.ACTION_DISPLAY_SETTINGS);  
            startActivity(intent);
 
13.    ACTION_DREAM_SETTINGS     【API 18及以上 没测试】
 
            Intent intent =  new Intent(Settings.ACTION_DREAM_SETTINGS);  
            startActivity(intent);
 
14.    ACTION_INPUT_METHOD_SETTINGS :    // 跳转语言和输入设备
 
            Intent intent =  new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);  
            startActivity(intent);
 
15.    ACTION_INPUT_METHOD_SUBTYPE_SETTINGS  【API 11及以上】  //  跳转 语言选择界面 【多国语言选择】
 
             Intent intent =  new Intent(Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS);  
             startActivity(intent);
 
16.    ACTION_INTERNAL_STORAGE_SETTINGS         // 跳转存储设置界面【内部存储】
 
             Intent intent =  new Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS);  
             startActivity(intent);
      或者:
 
        ACTION_MEMORY_CARD_SETTINGS    :   // 跳转 存储设置 【记忆卡存储】
 
             Intent intent =  new Intent(Settings.ACTION_MEMORY_CARD_SETTINGS);  
             startActivity(intent);
 
  
17.    ACTION_LOCALE_SETTINGS  : // 跳转语言选择界面【仅有English 和 中文两种选择】  
 
              Intent intent =  new Intent(Settings.ACTION_LOCALE_SETTINGS);  
              startActivity(intent);
 
 
18.     ACTION_LOCATION_SOURCE_SETTINGS :    //  跳转位置服务界面【管理已安装的应用程序。】
 
              Intent intent =  new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);  
              startActivity(intent);
 
19.    ACTION_NETWORK_OPERATOR_SETTINGS : // 跳转到 显示设置选择网络运营商。
 
              Intent intent =  new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);  
              startActivity(intent);
               
20.    ACTION_NFCSHARING_SETTINGS  : // 显示NFC共享设置。 【API 14及以上】
 
              Intent intent =  new Intent(Settings.ACTION_NFCSHARING_SETTINGS);  
              startActivity(intent);
 
21.    ACTION_NFC_SETTINGS  :// 显示NFC设置。这显示了用户界面,允许NFC打开或关闭。  【API 16及以上】
 
              Intent intent =  new Intent(Settings.ACTION_NFC_SETTINGS);  
              startActivity(intent);
 
22.    ACTION_PRIVACY_SETTINGS :       //  跳转到备份和重置界面
 
              Intent intent =  new Intent(Settings.ACTION_PRIVACY_SETTINGS);  
              startActivity(intent);
 
23.    ACTION_QUICK_LAUNCH_SETTINGS  : // 跳转快速启动设置界面
 
               Intent intent =  new Intent(Settings.ACTION_QUICK_LAUNCH_SETTINGS);  
               startActivity(intent);
 
25.    ACTION_SECURITY_SETTINGS  :     // 跳转到安全设置界面
 
               Intent intent =  new Intent(Settings.ACTION_SECURITY_SETTINGS);  
               startActivity(intent);
 
28.   ACTION_SYNC_SETTINGS :             // 跳转账户同步界面
 
                Intent intent =  new Intent(Settings.ACTION_SYNC_SETTINGS);  
                startActivity(intent);

30.     ACTION_WIFI_IP_SETTINGS  :         // 跳转到IP设定界面
 
                 Intent intent =  new Intent(Settings.ACTION_WIFI_IP_SETTINGS);  
                 startActivity(intent);
 
31.     ACTION_WIFI_SETTINGS  :            //  跳转Wifi列表设置

Intent之跳转总结的更多相关文章

  1. Intent的跳转和传值

    看了Intent的使用方法,感觉还是要做一些笔记的,首先对于Intent的跳转Activity这个功能的实现就有两种方法,也可以说有三种: 1.                  2.

  2. Intent界面跳转与传递数据

    Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. intent可以激活Activity,服务,广播三类组件. 本博文讲的是显示意图激活Activity组件 ...

  3. Intent Activity跳转 传递数据 Bundle

    1.普通跳转: Intent intent=new Intent(); intent.setClass(MainActivity.this,NewActivity.class); //新建一个Inte ...

  4. Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...

  5. Android 隐式 Intent 跳转注意事项

    前几天正好看到<阿里巴巴 Android 开发手册>中提到的: “Activity 间通过隐式 Intent 的跳转,在发出 Intent 之前必须通过 resolveActivity 检 ...

  6. Android Studio 之 通过 Intent 完成点击按钮实现页面跳转

    •Intent 简介 Intent 是 Android 程序中各组件之间进行交互的一种重要方式: 它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据. Intent 有多个构造函数,其 ...

  7. Activity Intent Flags及Task相关属性

    转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...

  8. Android之Activity跳转

    简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a sr ...

  9. Intent和Activity知识点总结

    1.Intent的跳转传值2.Intent的隐式启动(用于不同应用中)与显示启动(同一应用中)3.Activity的生命周期    void onCreate()——Activity已经被创建完毕,创 ...

随机推荐

  1. 清理maven本地库中的lastUpdated文件

    通过CMD命令窗口进入响应的文件夹下 输入指令 for /r %i in (*.lastUpdated) do del %i

  2. Spring XML文件配置

    singleton不能创建多对象(默认) <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...

  3. 基于CDH5.12安装Kylin及官方用例测试

    1 kylin 简介 Apache Kylin是2013年由eBay 在上海的一个中国工程师团队发起的.基于Hadoop大数据平台的开源 OLAP引擎,它采用多维立方体预计算技术,利用空间换时间的方法 ...

  4. 学习java的阶段性理解(其它语言也一样)

    打算从今天开始学java啊,待会滚去找资料了.现在谈一下学习java阶段性的理解.由于现在对java真的啥也不知道啊,不过还是要瞎鸡儿写点自己的看法,以下看法应该也使适用于其它语言: 第一阶段,入门级 ...

  5. 第十六次 ccf 201903-2 二十四点

    题意: 计算数学表达式的值, 数学表达式的定义: 4个[0-9]表示数字的字符 ,3个[+-x/]表示运算的字符 可以用正则为: ([0-9][+-x/]){3}[0-9] 例如: 5+2/1x3 2 ...

  6. C++中的基础特性:封装,继承,多态

    抽象: 要将现实中的一个具体事务,变成C++中的一个类,例如将现实中的汽车变成代码中的car类.完成这个过程就需要 抽象 这一基本手段. 抽象是指 对具体问题(对象)进行分析概括,找出该类对象的公共性 ...

  7. 软件开发者路线图梗概&书摘chapter4

    准确的自我评估:不是超出平庸,而是度量能力,做到更好,谦卑 1.只求最差:学期曲线趋平 更好团队→提供帮助+准确的自我评估 列举团队并排序 2.找人指导:学习前头的人,寻找师傅 加入社区,寻找活跃的老 ...

  8. Git学习之第一次使用PR

    发起PR的流程 1.Fork想要pr的项目,在自己的仓库里建立一个相同的项目. 2.Clone我们Fork的项目,在本地建立一个项目,方便修改. 3.将修改后的本地项目上传到github上. 4.向原 ...

  9. Django(其二)

    session def session_login(request): if request.method=='POST': username = request.POST.get('user') p ...

  10. JAVA基础搬运工

    1Java线程的6种状态及切换 https://blog.csdn.net/pange1991/article/details/53860651/ 2进程和线程的区别 https://www.cnbl ...