Android : 判断平台是否支持wifi功能
一、配置
Android4.0及以上版本的模块判断函数:getPackageManager().hasSystemFeature(String string). 通过该函数判断系统是否有特定的模块功能。
例如判断是否有wifi的具体代码:getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI);
PackageManager.FEATURE_WIFI 在PackageManager.java中的定义为:public static final String FEATURE_WIFI = "android.hardware.wifi";
而"android.hardware.wifi"字符串存在系统/system/etc/permissions/xxxx.xml文件里,它们一般从源码/framework/base/data/etc/xxx.xml复制过来(Android7.1 RK平台发现存在于frameworks/native/data/etc/xxx.xml文件);
二、解析
代码路径:\frameworks\base\core\java\com\android\server\SystemConfig.java
void readPermissions(File libraryDir, int permissionFlag) { // Read permissions from given directory. if (!libraryDir.exists() || !libraryDir.isDirectory()) { if (permissionFlag == ALLOW_ALL) { Slog.w(TAG, "No directory " + libraryDir + ", skipping"); } return; } if (!libraryDir.canRead()) { Slog.w(TAG, "Directory " + libraryDir + " cannot be read"); return; } // Iterate over the files in the directory and scan .xml files File platformFile = null; for (File f : libraryDir.listFiles()) { // We'll read platform.xml last if (f.getPath().endsWith("etc/permissions/platform.xml")) { platformFile = f; continue; } if (!f.getPath().endsWith(".xml")) { Slog.i(TAG, "Non-xml file " + f + " in " + libraryDir + " directory, ignoring"); continue; } if (!f.canRead()) { Slog.w(TAG, "Permissions library file " + f + " cannot be read"); continue; } readPermissionsFromXml(f, permissionFlag); //解析etc/permissions/下所有的.xml文件并提取支持的feature
} // Read platform permissions last so it will take precedence if (platformFile != null) { readPermissionsFromXml(platformFile, permissionFlag); } }
posted on 2021-03-03 11:19 sheldon_blogs 阅读(958) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY