android NVRAM读写方法

这篇博客介绍了如何在Android设备上进行NVRAM的读写操作,主要涉及两个关键类:NVRAMUtils.java和NvRAMAgent.java。通过调用NVRAMUtils的readNvRAMFile和writeNvRAMFile方法,可以读取和写入NVRAM中的数据。同时,文章提到使用ADB命令行工具进行调试,通过cat和echo命令来查看和修改NVRAM中的值。
摘要由CSDN通过智能技术生成

0.前言:有的时候业务需要读写NVRAM里面的数据,比如读MAC地址或者自定义NVRAM节点然后读写操作其节点值(NVRAM里面的值恢复出厂设置后还存在)

1.实际在需要读写nvram的地方导入NVRAMUtils.java和NvRAMAgent.java文件(注意文件的包名与添加的路径要一致),然后用

NVRAMUtils.readNvRAMFile(NVRAM的路径名)和 writeNvRAMFile就可以进行读写操作了,且读写的是byte数组,实际可能需要再转换为string类型的数据

2.实际调试可以通过adb shell然后cd到具体的节点路径,然后通过cat和echo读写里面的值,然后也可以pull出那个文件通过相关的软件查看里面的值(实际保存的为byte类型,文件查看到的为16进制数据)

========================

NVRAMUtils.java

import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.os.ServiceManager;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public static byte[] readNvRAMFile(String filename) {
IBinder binder = ServiceManager.getService("NvRAMAgent");
        NvRAMAgent agent = NvRAMAgent.Stub.asInterface(binder);
byte[] buff = null;
        try {
            buff = agent.readFileByName(filename);
return buff;
        } catch (Exception e) {
                e.printStackTrace();
        }
return null;
    }
public static void writeNvRAMFile(String filename,byte[] buff) {
IBinder binder = ServiceManager.getService("NvRAMAgent");
        NvRAMAgent agent = NvRAMAgent.Stub.asInterface(binder);
        try {
            agent.writeFileByName(filename,buff);
Log.i("xiaozheng", "ready backupToBinRegionAll");
agent.backupToBinRegionAll();
        } catch (Exception e) {
Log.i("xiaozheng", "writeNvRAMFile e="+e);
            e.printStackTrace();
        }
    }

=======================

NvRAMAgent.java

import android.os.IBinder;

public interface NvRAMAgent extends android.os.IInterface
{
    /** Local-side IPC implementation stub class. */

Android框架中,NVRAM(非易失性随机存储器)被用于存储系统相关的配置和参数,如无线通信模块的MAC地址、IMEI号码等。NVRAM的读写Android设备的系统级别中发挥重要作用。 首先,NVRAM读取功能在Android框架中由系统服务提供,通过封装底层的硬件接口和驱动程序来实现。Android的系统服务负责与硬件之间的通信,从NVRAM中读取所需的参数。在读取过程中,通过定义和使用适当的API,应用程序或系统组件可以请求读取特定的NVRAM值,以进行相关的操作和功能。 其次,NVRAM的写入功能也是由系统服务提供的。当应用程序或系统组件需要修改某个NVRAM参数时,可以通过调用相应的API来实现。系统服务将接收到的修改请求转发给硬件接口和驱动程序,然后将新值写入NVRAM中。这样,NVRAM中对应的参数将被更新,以满足新的需求。 在Android框架中,NVRAM读写功能的正确实现对于系统的正常运行非常重要。它确保各种系统组件可以正确访问配置和参数信息,并确保设备在启动时能够正确初始化。同时,NVRAM的读写操作需要受到适当的权限控制,只有具备足够权限的应用程序或系统组件才能进行相关的操作。 综上所述,Android框架中的NVRAM读写功能通过系统服务提供,并且在系统级别中发挥重要作用。这种功能确保了系统配置和参数的正确访问和修改,从而保障设备的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值