保护模式下的应用1
2016-07-02 10:37
183 查看
http://download.csdn.net/download/zhang_mq/9222807
/Settings/res/layout/hidden_apps_list.xml
/Settings/res/layout/hidden_apps_list_item.xml
private boolean getProtectedStateFromComponentName(ComponentName componentName) {
return mProtectedApps.contains(componentName);
}
import android.content.pm.PackageManager;
private PackageManager mPackageManager;
import java.util.HashSet;
import java.util.List;
import android.provider.Settings;
import com.android.Settings;
/Settings/src/com/android/settings/applications/ProtectedAppsActivity.java
private HashSet<ComponentName> mProtectedApps = new HashSet<ComponentName>();
private void getProtectedComponentsList() {
String protectedComponents = Settings.Secure.getString(getContentResolver(),
Settings.Secure.PROTECTED_COMPONENTS);
protectedComponents = protectedComponents == null ? "" : protectedComponents;
String [] flattened = protectedComponents.split("\\|");
mProtectedApps = new HashSet<ComponentName>(flattened.length);
for (String flat : flattened) {
ComponentName cmp = ComponentName.unflattenFromString(flat);
if (cmp != null) {
mProtectedApps.add(cmp);
}
}
}
private boolean getProtectedStateFromComponentName(ComponentName componentName) {
return mProtectedApps.contains(componentName);
}
在Android中,许多的系统属性都在settings应用当中进行设置的,比如wifi、蓝牙状态,当前本机语言,屏幕亮度等等一些相关的系统属性值。这些数据主要是存储在数据库中,对应的URI为:content://settings/system和content://settings/secure,这两个是主要的,目前也只是涉及到这两个数据库表的使用。
接下来,就了解下settings应用中是如何对系统属性进行设置的。
当需要获得当前wifi状态的值,调用已封装的方法如下:
Settings.Secure.getInt(getContentResolver() , Settings.Secure.WIFI_ON);
修改wifi状态只需要调用对应的setInt方法就可以实现。
当需要获得当前时间日期自动获取,调用如下:
Settings.System.getInt(getContentResolver() , "auto_time");
修改也是调用对应的setInt方法。
注意:这里修改settings的系统属性值需要有相关的权限。如修改wifi状态需要有android.permission.WRITE_SETTINGS权限,权限问题只要参考sdk下的描述就可以。
其实在settings应用中所获取或者修改属性都是调用了framework中android.provider.settings的Settings类对应的方法,也就是说真正有跟数据库打交道的是在provider中,这里也体现了ContentProvider的用途。
就大体说下android.provider.settings.Settings这个类吧。Settings里面创建了包含System和Secure在内的几个内部类,每个内部类都对应了一张数据库表,也就是继承自BaseColumns类,System和Secure类分别对应着system和secure数据库表。
对于上面通过getInt获得的字段,其实是在初始获得数据库数值的时候,首先是有getString方法将数据库数据保留,然后在integer.parseInt将数据转换成int类型。这就是settings读取和保留数据的基本原理。
/Settings/res/layout/hidden_apps_list.xml
/Settings/res/layout/hidden_apps_list_item.xml
private boolean getProtectedStateFromComponentName(ComponentName componentName) {
return mProtectedApps.contains(componentName);
}
import android.content.pm.PackageManager;
private PackageManager mPackageManager;
import java.util.HashSet;
import java.util.List;
import android.provider.Settings;
import com.android.Settings;
/Settings/src/com/android/settings/applications/ProtectedAppsActivity.java
private HashSet<ComponentName> mProtectedApps = new HashSet<ComponentName>();
private void getProtectedComponentsList() {
String protectedComponents = Settings.Secure.getString(getContentResolver(),
Settings.Secure.PROTECTED_COMPONENTS);
protectedComponents = protectedComponents == null ? "" : protectedComponents;
String [] flattened = protectedComponents.split("\\|");
mProtectedApps = new HashSet<ComponentName>(flattened.length);
for (String flat : flattened) {
ComponentName cmp = ComponentName.unflattenFromString(flat);
if (cmp != null) {
mProtectedApps.add(cmp);
}
}
}
private boolean getProtectedStateFromComponentName(ComponentName componentName) {
return mProtectedApps.contains(componentName);
}
在Android中,许多的系统属性都在settings应用当中进行设置的,比如wifi、蓝牙状态,当前本机语言,屏幕亮度等等一些相关的系统属性值。这些数据主要是存储在数据库中,对应的URI为:content://settings/system和content://settings/secure,这两个是主要的,目前也只是涉及到这两个数据库表的使用。
接下来,就了解下settings应用中是如何对系统属性进行设置的。
当需要获得当前wifi状态的值,调用已封装的方法如下:
Settings.Secure.getInt(getContentResolver() , Settings.Secure.WIFI_ON);
修改wifi状态只需要调用对应的setInt方法就可以实现。
当需要获得当前时间日期自动获取,调用如下:
Settings.System.getInt(getContentResolver() , "auto_time");
修改也是调用对应的setInt方法。
注意:这里修改settings的系统属性值需要有相关的权限。如修改wifi状态需要有android.permission.WRITE_SETTINGS权限,权限问题只要参考sdk下的描述就可以。
其实在settings应用中所获取或者修改属性都是调用了framework中android.provider.settings的Settings类对应的方法,也就是说真正有跟数据库打交道的是在provider中,这里也体现了ContentProvider的用途。
就大体说下android.provider.settings.Settings这个类吧。Settings里面创建了包含System和Secure在内的几个内部类,每个内部类都对应了一张数据库表,也就是继承自BaseColumns类,System和Secure类分别对应着system和secure数据库表。
对于上面通过getInt获得的字段,其实是在初始获得数据库数值的时候,首先是有getString方法将数据库数据保留,然后在integer.parseInt将数据转换成int类型。这就是settings读取和保留数据的基本原理。
相关文章推荐
- 最大连续子序列
- 前端开发者如何与UI设计师沟通
- JavaScript实现简单的拖动效果
- Android之手机通知栏Notification的使用(二)
- 进程通信--命名管道(FIFO)
- python的pandas处理数据第一次
- mysql 命令行常用命令
- Unity中的C#学习(二)
- ubuntu下apt-get指令中autoclean,clean,autoremove,--purgeremove说明
- Android开发环境离线工具包
- 强引用、软引用、弱引用、虚引用
- 保护模式下的应用
- PAT (Advanced Level) 1076. Forwards on Weibo (30)
- 介绍 Spring IoC 容器和 bean
- android pull解析xml
- QT5生成可执行文件总结
- “System.StackOverflowException”类型的未经处理的异常在 mscorlib.dll 中发生
- HeadFirstJava——2_类与对象
- jsp分页页面——数字分页
- PAT (Advanced Level) 1075. PAT Judge (25)