这篇文章针对的是系统权限的app,因为

Intent.ACTION_AIRPLANE_MODE_CHANGED 在AndroidManifest.xml文件中属于<protected-broadcat/>,需要权限需要高权限才能操作,
//Intent.class
public class Intent implements Parcelable, Cloneable {
...public static final String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";
...
}//  framework/base/core/res/AndroidManifest.xml
<protected-broadcast android:name="android.intent.action.AIRPLANE_MODE" />

应为Android 发送广播最终要走 ActivityManagerService 的broadcastIntentLocked 方法,我贴一段发送广播的代码,在里面有一段代码是判断当前 app的 uid权限的,如果权限不够则直接跑出异常

 @GuardedBy("this")final int broadcastIntentLocked(ProcessRecord callerApp,String callerPackage, Intent intent, String resolvedType,IIntentReceiver resultTo, int resultCode, String resultData,Bundle resultExtras, String[] requiredPermissions, int appOp, Bundle bOptions,boolean ordered, boolean sticky, int callingPid, int callingUid, int userId) {...final boolean isCallerSystem;switch (UserHandle.getAppId(callingUid)) {case ROOT_UID:case SYSTEM_UID:case PHONE_UID:case BLUETOOTH_UID:case NFC_UID:case SE_UID:isCallerSystem = true;break;default:isCallerSystem = (callerApp != null) && callerApp.persistent;break;}// First line security check before anything else: stop non-system apps from// sending protected broadcasts.if (!isCallerSystem) {if (isProtectedBroadcast) {String msg = "Permission Denial: not allowed to send broadcast "+ action + " from pid="+ callingPid + ", uid=" + callingUid;Slog.w(TAG, msg);throw new SecurityException(msg);} else if (AppWidgetManager.ACTION_APPWIDGET_CONFIGURE.equals(action)|| AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {// Special case for compatibility: we don't want apps to send this,// but historically it has not been protected and apps may be using it// to poke their own app widget.  So, instead of making it protected,// just limit it to the caller.if (callerPackage == null) {String msg = "Permission Denial: not allowed to send broadcast "+ action + " from unknown caller.";Slog.w(TAG, msg);throw new SecurityException(msg);} else if (intent.getComponent() != null) {// They are good enough to send to an explicit component...  verify// it is being sent to the calling app.if (!intent.getComponent().getPackageName().equals(callerPackage)) {String msg = "Permission Denial: not allowed to send broadcast "+ action + " to "+ intent.getComponent().getPackageName() + " from "+ callerPackage;Slog.w(TAG, msg);throw new SecurityException(msg);}} else {// Limit broadcast to their own package.intent.setPackage(callerPackage);}}}...  return ActivityManager.BROADCAST_SUCCESS;}
 /*** 飞行模式开关* @param setAirPlane*/public static void toggleAirplaneMode(Context context,boolean setAirPlane) {Log.d(TAG, "toggleAirplaneMode: "+setAirPlane);String value = setAirPlane?"1":"0";Log.d(TAG, "toggleAirplaneMode: "+value);Settings.Global.putString( context.getContentResolver(),Settings.Global.AIRPLANE_MODE_ON,value );Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);context.sendBroadcast(intent);}

Android 9.0 开启飞行模式相关推荐

  1. shell开启飞行模式_手机上的飞行模式,每天都能用得上,我是才知道,涨知识...

    哈喽,大家好,日常生活中,不管买的什么牌子的手机,安卓手机,还是华为手机还是苹果手机,新手机上的新功能都被我们了解的差不多了,但是你知道吗?手机上的飞行模式,有人每天打开用一次,有人一次没用过,其实它 ...

  2. Android studio3.0开启抓包功能打包会使apk体积增大好几倍

    Android studio3.0开启抓包功能打包会使apk体积增大好几倍 Android studio3.0开启抓包功能打包会使apk体积增大好几倍: 今天尝试了下AS3.0抓包功能,还没怎么整明白 ...

  3. shell开启飞行模式_今天才知道,原来手机的飞行模式用处那么多,看完涨知识了...

    想必大家都知道,手机里有个飞行模式,是在乘坐飞机时使用的.其实除了这个功能之外,飞行模式还有很多其他的妙用,下面笔者就为大家一一进行介绍. 一. 加快充电速度 有些特殊情况你想加快手机的充电速度时,可 ...

  4. shell开启飞行模式_原来手机飞行模式有这么多用处!99%的深圳人都不知道...

    相信大家都知道我们的手机里有个功能叫「飞行模式」(又称航空模式)它可以关掉手机收发信号的装置避免手机信号对飞机飞行造成干扰来源:网络那么对于不常坐飞机的人来说「飞行模式」功能是不是毫无用处呢?当然不是 ...

  5. shell开启飞行模式_手机飞行模式,太神奇了,今天总算明白了,不用真是太浪费了...

    大家好,谢谢观看本期生活小妙招,我是,一切妙招都来于生活. 手机我们现在几乎人人都有,而且现在的手机功能非常多,手机里有一个飞行模式相信大家都不陌生,这个就是坐飞机时使用的,主要用来屏蔽手机信号,可是 ...

  6. shell开启飞行模式_手机飞行模式有什么用 手机飞行模式介绍【详解】

    手机飞行模式功能一直被大家吐槽为最没有用的手机功能,随着智能手机的快速发展,手机很多功能都已经逐渐消失被替代,唯独飞行模式依旧占据着手机设置里的主要地位. 那么问题来了,手机飞行模式到底有什么用? 1 ...

  7. Android 7.0 ----- Direct Boot模式(AppClock)

    本文针对闹钟应用对于此次Android 7.0增加DB模式所需要的应对方式. Direct Boot模式:设备已开机但用户尚未解锁设备时,Android 7.0 将在安全的"直接启动&quo ...

  8. 解决Thinkpad开启飞行模式无法连接无线网络

    解决Thinkpad开启飞行模式无法连接无线网络 1.安装了电源管理驱动.电源管理软件和快捷键驱动 2.按了Fn+F9快捷键,开启了电脑的飞行模式 3.后来关闭了电脑的飞行模式 4.结果导致了无线网络 ...

  9. 关于Android 8.0开启热点(HotSpot)

    关于Android 8.0开启热点(HotSpot) 开启热点(Android 8.0) 关闭热点(Android 8.0) 第一种方法: 第二种方法: 注意事项: 问题1: 解决: 问题2: 解决: ...

  10. shell开启飞行模式_手机飞行模式竟然有这些神奇功能?!别说小坊没告诉你

    首先小坊先说个笑话 明明给手机开了飞行模式, 为什么从五楼掉下去 还是把屏幕摔碎了? 言归正传 说到"飞行模式", 很多朋友们都会说, 我又不坐飞机,要它有啥用? 那么小坊告诉各位 ...

最新文章

  1. 每日一皮:男同胞们小心,连视频直播都被东南亚邪术控制了...
  2. 远程计算机串口控制软件,智能控制的设备上使用远程开关需要用到RS485串口继电器、网关、电脑平台...
  3. quad8是matlab中调用那个,Matlab 数值积分
  4. python-小数点保留位数问题
  5. Opencv--获取Mat图像数据的方式
  6. MySQL从零到一解读增量同步数据到elasticsearch canal adapter方式(binlog)实现
  7. linux无法找到网卡6,CentOS 6/7克隆主机网卡无法启动解决
  8. 从零开始使用CodeArt实践最佳领域驱动开发(三)
  9. 关闭防火墙linux 16.04,如何在Ubuntu 16.04上配置和设置防火墙
  10. 如何在云上高效地实践“自动化”和“弹性”
  11. GBDT, Gradient Boost Decision Tree,梯度提升决策树
  12. Android项目实践--《智慧校园》
  13. 安卓支持AES 256加密解密
  14. 十年互联网,十个风云人物——历史会记住他们!
  15. 报错:CMake Error at /usr/share/cmake-3.10/Modules/CMakeDetermineCCompiler.cmake:48 (message):
  16. 消防应急照明和疏散指示系统在城市隧道中的应用
  17. Google Filament 源码学习(四):Material System (三) - 材质格式 (mat)
  18. 通信工程师,到底是干啥的?
  19. 深度学习的主要应用举例
  20. 实验六 图的遍历操作及应用

热门文章

  1. Django学习 day61之Django第七日
  2. Win10:修改电脑桌面路径
  3. 写JAVA的,码农,程序员,工程师有啥不同
  4. 微信小程序 免密代扣
  5. HDMI接口 HDCP
  6. windows服务器迁到_windows服务器搬迁指南
  7. 磁珠 符号_电子元件磁珠该如何使用呢?
  8. 服务器硬盘raid方案,服务器RAID磁盘阵列经验总结
  9. 如何批量压缩pdf文件大小?
  10. matlab 音乐 豆腐汤,40岁健康家常菜pdf