1. 配置SELinux权限

SELinux(或SEAndroid)主要将app划分为三种类型(根据user不同,也有其他的domain类型):

1)untrusted_app 第三方app,没有android平台签名,没有system权限2)platform_app 有android平台签名,没有system权限3)system_app 有android平台签名和system权限

从上面划分,权限等级,理论上:untrusted_app < platform_app < system_app

TE介绍:

allow netd proc:file write

这条语句的语法为:

allow:TE的allow语句,表示授权。除了allow之外,还有allowaudit、dontaudit、neverallow等。

netd:source type。也叫subject,domain。

proc:target type。它代表其后的file所对应的Type。

file:代表Object Class。它代表能够给subject操作的一类东西。例如File、Dir、socket等。在Android系统中,有一个其他Linux系统没有的Object Class,那就是Binder。

write:在该类Object Class中所定义的操作。

根据SELinux规范,完整的allow相关的语句格式为:

rule_name source_type target_type : class perm_set

我们直接来看几个实例:

[例子3]

//SEAndroid中的安全策略文件policy.conf

#允许zygote域中的进程向init type的进程(Object Class为process)发送sigchld信号

allow zygote init:process sigchld;

#允许zygote域中的进程search或getattr类型为appdomain的目录。注意,多个perm_set

#可用{}括起来

allow zygote appdomain:dir { getattr search };

#来个复杂点的:

#source_type为unconfineddomain target_type为一组type,由

#{ fs_type dev_type file_type }构成。object_class也包含两个,为{ chr_file file }

#perm_set语法比较奇特,前面有一个~号。它表示除了{entrypoint relabelto}之外,{chr_file #file}这两个object_class所拥有的其他操作

allow unconfineddomain {fs_type dev_type file_type}:{ chr_file file } \

~{entrypoint relabelto};

#特殊符号除了~外,还有-号和*号,其中:

# 1):-号表示去除某项内容。

# 2):*号表示所有内容。

#下面这条语句中,source_type为属于appdomain,但不属于unconfinedomain的进程。

#而 *表示所有和capability2相关的权限

#neverallow:表示绝不允许。

neverallow { appdomain -unconfineddomain } self:capability2 *;

type的定义:

type命令的完整格式为:type type_id [alias alias_id,] [attribute_id]

其中,方括号中的内容为可选。alias指定了type的别名,可以指定多个别名

/device/qcom/sepolicy/common/

1 file.te 定义 sysfs_brightnesstypesysfs_brightness, sysfs_type, fs_type;

2 file_comtexts 配置sysfs_brightness

/sys/class/leds/lcd-backlight/brightness u:object_r:sysfs_brightness:s0

3 app.te 配置权限

allow appdomain sysfs_brightness:file rw_file_perms;

4 system_app.te 配置权限

allow system_app sysfs_brightness:file rw_file_perms;

5. 默认设置第三方输入法

framework/base/packages/SettingsProvider/res/values/customize.xml

"def_enable_input_methods" translatable="false">com.baidu.input/.ImeAppMainActivity

百度:com.baidu.input/.ImeService

讯飞:com.iflytek.inputmethod/.FlyIME

腾讯:com.tencent.qqpinyin/.QQPYInputMethodService

谷歌:com.google.android.inputmethod.pinyin/.PinyinIME

搜狗:com.sohu.inputmethod.sogou/.SogouIME

触宝:com.cootek.smartinput5/.TouchPalIME

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#Module name should match apk name to be installed

LOCAL_MODULE := baiduinput

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := PRESIGNED

LOCAL_MULTILIB:=32

LOCAL_PREBUILT_JNI_LIBS:= \

@lib/armeabi/libbdEASRAndroid.so \

@lib/armeabi/libbdEASRAndroid.v1.8.8.so \

@lib/armeabi/libbdinput_gif_v1_0_10.so \

@lib/armeabi/libBDVoiceRecognitionClient_MFE_V1.so \

@lib/armeabi/libchiperencoder_v1_2_1.so \

@lib/armeabi/libprocmoi_v1_4.so \

@lib/armeabi/libprocmox_v1_4.so

include $(BUILD_PREBUILT)

#LOCAL_PRIVILEGED_MODULE := true

#LOCAL_OVERRIDES_PACKAGES := Home

6. Android4.4之后配置应用写入短信权限

framework/opt/telephony/*/SmsApplication.java

getDefaultSmsApplicationPackageName()

参考BLUETOOTH_PACKAGE_NAME添加USERCENTER_PACKAGE_NAME

设置拨号盘暗码

com.android.dialer.SpecialCharSequenceMgr.java

参考MMI_IMEI_DISPLAY,handleDeviceIdDisplay()

7. app默认权限授予

frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java

8. 添加全局变量开关(三种方式)

1. android.provider.Settings.System.getInt(getContentResolver(),"test", 0);

android.provider.Settings.System.putInt(getContentResolver(),"test", 1);

Settings有System Global Secure

2.1 定义: ./frameworks/base/core/res/res/values/symbols.xml:

type="bool" name="config_sms_ringtone_incall" />

2.2 定义: ./frameworks/base/core/res/res/values/config.xml:

"config_sms_ringtone_incall">true

读取:

context.getResources().getBoolean(com.android.internal.R.bool.config_sms_ringtone_incall)

3.system.prop中添加:

tinno_gms_able = false

使用:

import android.os.SystemProperties;

SystemProperties.getBoolean("tinno_gms_able", false);

system.prop生成的位置

out/target/product/l5261/system/build.prop

对属性的读写操作

adb shell getprop key

adb shell setprop key value (eng版本)

9. 编译中预拷贝文件或文件夹

/device/qucii/qucii8976v3_64/qucii8976v3_64.mk:

配置文件的拷贝路径:

PRODUCT_COPY_FILES += device/qucii/qucii8976v3_64/Homecare_Chinese_93sec_color.mp4:system/media/Homecare_Chinese_93sec_color.mp4

配置文件夹拷贝路径:

PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,vendor/qcom/proprietary/Tone,storage/emulated/0/Tone) 或:

$(shellmkdir -p ${OUT}"/system/etc/")源码编译的时候,先读取该mk文件,该目录还没创建,所以要建一个,否则拷贝失败。 $(shellcp -rf $(LOCAL_PATH)/usb_modeswitch.d ${OUT)}"/system/etc/"),然后通过shell拷贝任意文件。注意:

如果拷贝的是apk文件,可能会报错:

原因是build/core/Makefile中做了检测,注释build/core/Makefile中的define check-product-copy-file函数即可

10. 默认勾选 未知来源

false

11. 修改系统默认值(WiFi,蓝牙初始开关);默认铃声, 通知, 闹钟, 音乐,字体

1. framework/base/packages/SettingsProvider/res/values/defaults.xml

2. 可以在system.prop 分别配置

ro.config.ringtone=Playa.ogg (默认铃声设置,文件在/system/media/audio/ringtones 把喜欢的铃声放这里,比如123.MP3放入ringtones文件夹中,这里代码改为ro.config.ringtone=123.mp3)

ro.config.notification_sound=regulus.ogg (默认提示音,文件在/system/media/audio/notifications 修改方法同上)

ro.config.alarm_alert=Alarm_Beep_03.ogg (默认闹铃,文件在/system/media/audio/alarms 修改方法同上)

3.默认字体:

public void readFontSizePreference(ListPreference pref) {

ActivityManagerNative.getDefault().getConfiguration()

系统的Configuration是从ActivityManagerService设置的:

mConfiguration.setToDefaults();

fontScale = Float.parseFloat(SystemProperties.get("ro.fontScale","1"));

11. 设置-->开发者选项--修改后台进程限制

frameworks/base/services/java/com/android/server$ vi ./am/ActivityManagerService.java

把int mProcessLimitOverride = -1;改成4(不得超过4个进程)

标准限制 对应 -1

不允许后台进程 对应 0

不得超过1个进程 对应 1

不得超过2个进程 对应 2

不得超过3个进程 对应 3

11.默认不要锁屏,设置-安全--屏幕锁定 (无)

overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml true

12. 修改默认字体

2.1 在4.1上修改默认字体大小:

比如改成大:

\base\packages\SettingsProvider\res\values\defaults.xml>

115%

修改默认(Settting.apk 中选项默认值一般存在于 frameworks\base\packages\SettingsProvider\res\values\defaults.xml)

13. 获取正在播放音乐app包名

// com.android.server.audio.AudioService callingPackageName为当前获取焦点app包名

public int requestAudioFocus(AudioAttributes aa, int durationHint, IBinder cb,

IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags,

IAudioPolicyCallback pcb) {

}

AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

audio.isMusicActive() // 判断是否有音乐播放

14.如何将非系统app预置到Doze的白名单中

1.在framework/base/data下创建data目录

2.在framework/base/data/data下创建deviceidle.xml 然后把白名单app按以下格式写入

deviceidle.xml

xml version='1.0' encoding='utf-8' standalone='yes' ?>

config>

3.在framework/base/data/data下创建Android.mk文件

Android.mk

LOCAL_PATH := $(my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := deviceidle.xml

LOCAL_MODULE_CLASS := DATA

# This will install the file in /data/system

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/system

LOCAL_SRC_FILES := $(LOCAL_MODULE)

include $(BUILD_PREBUILT)

3.定义deviceidle.xml在 build/target/product/base.mk中

PRODUCT_PACKAGES += \

...

monkey \

mtpd \

ndc \

netd \

ping\

ping6 \

platform.xml \

deviceidle.xml \

pppd \

pm \

...

android 默认勾选权限_Android系统Framework定制默认值预置修改相关推荐

  1. 前端学习(1934)vue之电商管理系统电商系统之分析实现默认勾选权限

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  2. 1.3【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志

    前言 [展讯平台]Android 4.4 驱动(Kernel).系统(framework) 定制,调试日志 正文 1:提高串口日志等级 查看 adb shell cat /proc/sys/kerne ...

  3. 【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志,持续更新中..

    前言 [展讯平台]Android 4.4 驱动(Kernel).系统(framework) 定制,调试日志 正文 1:提高串口日志等级 查看 adb shell cat /proc/sys/kerne ...

  4. 【独家】防不胜防!默认勾选复燃,看刚上市的「同程艺龙」作恶勇气和相悖价值观 || 新芒X...

    作者|震霆   出品|新芒X        公众号|GOwithAI "机关算尽太聪明,反算了卿卿性命." 这是出自红楼梦的经典桥段.如果把这句话扣在这家叫「同程艺龙」的公司头上也 ...

  5. vue设置多选框默认勾选_Angular/Vue多复选框勾选问题

    此页面效果以Angular实现,Vue也可按照其大致流程实现,其核心本质没有改变. 功能效果为:页面初始化效果为要有所有角色的复选框,要求初始化默认勾选的角色要显示勾选,之后,能按照最终勾选的状态提交 ...

  6. element表格默认勾选

    使用表格的时候,偶尔会需要回勾上一次勾选的数据(默认勾选): 主要是用到了默认提供的方法:toggleRowSelection(row,boolean) this.allData.forEach(it ...

  7. Vue elementui 实现表格selection的默认勾选

    需求:弹出一个选择框,表格有勾选框,数据填充后,某些行设置默认勾选. 如下图: 数据填充后默认是不勾选的,如果要勾选某些行,通过toggleRowSelection this.$refs.zttabl ...

  8. Discuz!教程之论坛编辑器默认勾选HTML代码的修改方法

    经常有很多站长朋友问怎么才能默认勾选html代码,编辑器怎么修改能够默认勾选HTML代码.现在将这个问题整理成教程,希望对有其他类似问题的朋友有所启发. 首先第一步,你要开启版块允许使用HTML代码, ...

  9. elementUI中的el-table勾选框设置默认勾选、禁用

    elementUI中的el-table勾选框设置默认勾选.禁用 最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark= ...

最新文章

  1. 6000星人气深度学习资源!架构模型技巧全都有,图灵奖得主LeCun推荐
  2. 进击的 Java ,云原生时代的蜕变
  3. 中文按拼音首字母排序的C++实现方案
  4. 大剑无锋之大数据面试题第一套(选择题)
  5. jrockit_Java堆空间– JRockit和IBM VM
  6. 爬虫:突破有道翻译js加密(最新)
  7. 6-4 链表逆置 (10 分)
  8. MediaPlayer对象从停止状态到播放状态调用的方法是prepare()和start()
  9. unity序列帧动画
  10. 计算机ps图片在哪里看,如何在Photoshop中查看照片的EXIF信息如何删除照片的exif信息...
  11. 安科瑞ACY100油烟浓度在线监控仪在浙江省某市餐饮油烟监测治理项目中的应用
  12. 第十四篇、贪吃蛇小游戏的制作
  13. 上传gitlab ! [remote rejected] dev - dev (pre-receive hook declined)
  14. 大厂前端面试都问些什么问题?入职爱奇艺年薪48万,面试经验总结
  15. 武大计算机专业薪酬,2018大学毕业生薪酬排行榜公布:武大输给华科,更意想不到的高校是它...
  16. python读写、创建文件、文件夹
  17. 2010 我的求职经历(1)
  18. pro unity xl编程手册_施耐德Unity Pro XL编程使用入门
  19. [转载] Java是剑客-飘逸;.NET是刀客-霸道 (二)
  20. R语言有RStan的多维验证性因子分析(CFA)

热门文章

  1. 百度网盘直链下载教程
  2. 白色相簿2 coda篇各结局概率分析
  3. 2018年高教社杯全国大学生数学建模竞赛D题解题思路
  4. linux如何安装Tomcat
  5. Chart.js使用
  6. 数据库 not in 的坑
  7. 每日简报 5月11日简报新鲜事 每天一分钟 了解新鲜事
  8. 评价指标 balanced accuracy
  9. JSON格式数据示例操作
  10. linux虚拟机和主机的文件拷贝