1.在底层,创建节点并给予访问节点的权限
2.在顶层添加暗码和调用的函数
3.编写app ReadHwid
4.编写app完后,发现通过电话拨号键 暗码*#850208# 显示:TP SW Version hello world!
5.权限解决方案
附加知识点
1、在底层,创建节点并给予访问节点的权限
kernel/msm-3.18/drivers/input/touchscreen/synaptics_dsx/synaptics_dsx_core.c
__ATTR(buildid, (S_IRUGO | S_IWUSR | S_IWGRP),
synaptics_rmi4_f01_buildid_show,
synaptics_rmi4_store_error),
static ssize_t synaptics_rmi4_f01_buildid_show(struct device *dev,struct device_attribute *attr, char *buf)
{
struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev);
return snprintf(buf, PAGE_SIZE, "firmware_id:%u\n",
rmi4_data->firmware_id);
}
static inline ssize_t synaptics_rmi4_store_error(struct device *dev,struct device_attribute *attr, const char *buf, size_t count)
{
dev_warn(dev, "%s Attempted to write to read-only attribute %s\n",
__func__, attr->attr.name);
return -EPERM;
}
解析:buildid // 为节点名
S_IRUGO | S_IWUSR | S_IWGRP //用户可读|用户可写|小组用户可读可写权限
synaptics_rmi4_f01_buildid_show //显示函数,cat该文件时,此函数被调用
synaptics_rmi4_store_error //写函数,echo内容到该文件时,此函数被调用
通过adb可以查看到节点和TP FW的版本号:
2、在顶层添加暗码和调用的函数 /Halo/packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java
@@ -81,6 +81,7 @@public class SpecialCharSequenceMgr {
private static final String PRL_VERSION_DISPLAY = "*#0000#";
private static final int IMEI_14_DIGIT = 14;
+ private static final String HWVESION = "*#850208#";
@@ -159,7 +160,8 @@ public class SpecialCharSequenceMgr {
|| handleQSensorTest(context,dialString)
|| handleEngineerTest(context, dialString)
|| handleDeadCode(context, dialS