飞行模式下打开wifi 和 Setting界面增加Shut down & Reboot功能
来源:互联网 发布:linux中没有yum命令 编辑:程序博客网 时间:2024/05/01 22:42
1.飞行模式下打开wifi
问题描述:打开飞行模式后,能打开wifi
解决方法:
在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml下面配置.
25 <!-- Comma-separated list of bluetooth, wifi, and cell. -->26 <string name="def_airplane_mode_radios" translatable="false">cell,bluetooth,wifi,nfc,wimax</string> //在打开飞行模式时候,立即关闭配置在这里的应用cell,bluetooth,wifi,nfc,wimax27 <string name="airplane_mode_toggleable_radios" translatable="false">bluetooth,wifi,nfc</string>//在飞行模式被打开以后,这时候去打开wifi等应用,是可以打开bluetooth,wifi,nfc等应用的//注意26:是在打开飞行模式时,如果wifi是被打开着的,这时瞬间wifi等应用就被断开了//27:是在飞行模式被打开以后,这个时候去打开bluetooth,wifi,nfc等应用是可以被打开的哟,就可在quick setting里面打开WiFi,进入设置里,也可以打开飞行模式
在设备上的路径
data/data/com.android.providers.settings/databases 目录里的settings.db里面的system
飞行模式下禁止打开蓝牙:
这里主要控制的是quick setting的开关。
如果想要在飞行模式打开下,禁止打开蓝牙,就是如下处理:
/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
修改之前:
76 @Override77 protected void handleClick() {78 final boolean isEnabled = (Boolean)mState.value;79 MetricsLogger.action(mContext, getMetricsCategory(), !isEnabled);80 mController.setBluetoothEnabled(!isEnabled);81 }
修改之后:
//首先判断是否是飞行模式 public boolean isAirplaneModeOn() { return (Settings.System.getInt(mContext.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) != 0); } @Override protected void handleClick() { //将飞行模式作为判断 if (!isRadioProhibited() && !isAirplaneModeOn()) { final boolean isEnabled = (Boolean)mState.value; mController.setBluetoothEnabled(!isEnabled); } }
如果想要禁止wifi的话也是一样的做法哟。
/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
99 protected void handleClick() {100 mState.copyTo(mStateBeforeClick);101 MetricsLogger.action(mContext, getMetricsCategory(), !mState.enabled);102 mController.setWifiEnabled(!mState.enabled);103 }104
2.Setting界面增加Shut down & Reboot功能
其实下面的解决方法不是很好,没有在AndroidManifest.xml里面写activity,也没有在SettingActivity.java里面写东西,这样是不好的,因为任何一个Fragment必须依附在Activity上,这里我没有用到Activity,也是绝了。经过大神的讲解,没有定义Activity,Setting也没有挂,是因为在Utils.java中
Utils.java public static Intent onBuildStartFragmentIntent(Context context, String fragmentName,716 Bundle args, String titleResPackageName, int titleResId, CharSequence title,717 boolean isShortcut) {718 Intent intent = new Intent(Intent.ACTION_MAIN);719 intent.setClass(context, SubSettings.class); //如果没有定义activity,那就直接搞成SubSettings.class,720 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentName);721 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);722 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME,723 titleResPackageName);724 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, titleResId);725 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);726 intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT, isShortcut);727 return intent;728 }
解决方法:
modify两文件,add两文件。
全部都在packages/apps/Settings下面修改及添加文件的哟
# modified: res/values/strings.xml
# modified: res/xml/dashboard_categories.xml
Untracked files:
(use “git add …” to include in what will be committed)
# res/xml/aaa.xml
# src/com/android/settings/XXXXX.java
网上左拼又凑弄起的public class XXXXX extends SettingsPreferenceFragment { private static final String TAG = "XXXXX"; private static final String MYSHUTDOWNSETTINGS = "myshutdownsetting"; private static final String MYREBOOTSETTINGS = "myrebootsetting"; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); addPreferencesFromResource(R.xml.aaa);//加载自己定义在res/xml/下面的布局文件 } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference.getKey().equals(MYSHUTDOWNSETTINGS)) { //关机界面,action="android.intent.action.ACTION_REQUEST_SHUTDOWN" Log.d(TAG, "MYSHUTDOWNSETTINGS"); Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN"); i.putExtra("android.intent.extra.KEY_CONFIRM", false); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); return true; } else if (preference.getKey().equals(MYREBOOTSETTINGS)) { //重启,action="android.intent.action.REBOOT" Log.d(TAG, "MYREBOOTSETTINGS"); Intent i = new Intent("android.intent.action.REBOOT"); i.putExtra("nowait", 1); i.putExtra("interval", 1); i.putExtra("window", 0); startActivity(i); return true; } return super.onPreferenceTreeClick(preferenceScreen, preference); }}
- 飞行模式下打开wifi 和 Setting界面增加Shut down & Reboot功能
- Setting下增加触摸笔功能(TP)
- android 5.1 添加reboot 飞行模式 silent
- Windows XP Shut Down and Automatic Reboot Problems(Windows系统关机时自动重新启动问题)
- Android飞行模式下Wifi开关行为的控制
- [Linux]Shut Down Firewall
- ycmd server SHUT DOWN
- 【干货】system/app 下应用打开关闭飞行模式
- 为对话框增加打开和另存为功能
- process.start (shut down pc)
- 线程的shut down方法
- SSL peer shut down incorrectly
- SSL peer shut down incorrectly
- SSL peer shut down incorrectly
- 控制GPS/WIFI/蓝牙/飞行模式
- android 常用功能的切换(wifi开关,蓝牙开关,飞行模式切换,响铃模式切换,亮度切换)
- iOS设备中WiFi、蓝牙和飞行模式的开启与关闭
- iOS设备中WiFi、蓝牙和飞行模式的开启与关闭
- java对象和json对象之间互相转换
- 高并发通用技术点
- 字符串的查找
- 继承、封装、多态
- MainStoryBoard 中UITableView Cell的重用
- 飞行模式下打开wifi 和 Setting界面增加Shut down & Reboot功能
- ARM和NEON指令
- 使用VS2010 编译Openssl
- 计算机中数据的存储和读取
- C++ 和 C# 开发类型对应信息
- pku3233 Matrix Power Series
- python——读写excel
- MediaPlayer获取实例的方法
- 欢迎使用CSDN-markdown编辑器