Intent之跳转总结
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);
}
/**
* 启动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);
}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;
}/**
* 获取通知栏开关的状态:分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;
}/**
* 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;
}
}/**
* 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;
}
}/**
* 针对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;
}
}
/**
* 打开允许通知的设置页(跳到的是全部通知的页面,不是很理想)
*/
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 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之跳转总结的更多相关文章
- Intent的跳转和传值
看了Intent的使用方法,感觉还是要做一些笔记的,首先对于Intent的跳转Activity这个功能的实现就有两种方法,也可以说有三种: 1. 2.
- Intent界面跳转与传递数据
Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. intent可以激活Activity,服务,广播三类组件. 本博文讲的是显示意图激活Activity组件 ...
- Intent Activity跳转 传递数据 Bundle
1.普通跳转: Intent intent=new Intent(); intent.setClass(MainActivity.this,NewActivity.class); //新建一个Inte ...
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...
- Android 隐式 Intent 跳转注意事项
前几天正好看到<阿里巴巴 Android 开发手册>中提到的: “Activity 间通过隐式 Intent 的跳转,在发出 Intent 之前必须通过 resolveActivity 检 ...
- Android Studio 之 通过 Intent 完成点击按钮实现页面跳转
•Intent 简介 Intent 是 Android 程序中各组件之间进行交互的一种重要方式: 它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据. Intent 有多个构造函数,其 ...
- Activity Intent Flags及Task相关属性
转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...
- Android之Activity跳转
简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a sr ...
- Intent和Activity知识点总结
1.Intent的跳转传值2.Intent的隐式启动(用于不同应用中)与显示启动(同一应用中)3.Activity的生命周期 void onCreate()——Activity已经被创建完毕,创 ...
随机推荐
- Vue.js模板语法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【转载】 什么是AutoML
文章来源:企鹅号 - 仲耀晖的碎碎念 tzattack Studio presents 来源:Google AI Blog 编译:仲耀晖 ------------------------------- ...
- Dapper使用技巧分享
Dapper是轻量级的.net ORM框架,配合linq和泛型,让C#操作数据的代码简洁.高效又灵活!最近的工作项目中使用了Dapper,在这里分享一些实用技巧.阅读之前需要了解一些基本的使用方法,参 ...
- Python3.7和数据库MySQL 8.0.12 数据库SQLite3连接(三)
SQLite3 # SQLite3 嵌入式 数据库 python内置SQLite3 # 导入驱动 import sqlite3 # 创建自增主键的表 msql = "create table ...
- SpringBoot1-创建SpringBoot项目
Spring Boot这两年的发展迅速,很多公司都在用,社区也越来越活越.本人也是基于此框架开发了几个项目,特和各位广大同行分享一下自己的心得体会. Spring Boot基于约束大于配置,开箱即用, ...
- Node版本管理工具-NVM的安装与使用(windows系统)
友情提示:为避免踩坑,建议浏览全文后动手操作!!! 一.nvm是什么 看到这篇文章的猿/媛们肯定不会问这个问题了,但是我还是要说,哈哈哈! 无论工作还是干嘛,就不会一直做项目,所以肯定也不会一直用一个 ...
- mock数据,尽量随机,1次插入多条
建表,多设置一个字段id_tmp create table if not exists mall_data.dtw_mall2_adm_customer_d_tmp( id_tmp string co ...
- vue集成环信IM
vue 集成环信im 简单demo 环信AppKey:1106190415055331#test 测试账号: test1 123456 test2 123456 test3 123456 默 ...
- github/gitee使用办法2
打开自己的仓库 git pull 把内容复制过去 git add . 添加所有 查看状态 git status 提交 git commit -m 'XXX' 最后push git push 如果内容本 ...
- 学习笔记TF058:人脸识别
人脸识别,基于人脸部特征信息识别身份的生物识别技术.摄像机.摄像头采集人脸图像或视频流,自动检测.跟踪图像中人脸,做脸部相关技术处理,人脸检测.人脸关键点检测.人脸验证等.<麻省理工科技评论&g ...