使用三星Knox实现XCover PTT按键监听时,找不到intent包怎么办?
我想要使用Samsung Knox处理XCover设备的PTT按键,尝试实现如下广播接收器代码来监听按键的按下与释放事件,但在Knox的.jar库中找不到com.samsung.android.knox.intent相关包,请问该如何解决?
代码示例:
String intentAction = intent.getAction(); if ("com.samsung.android.knox.intent.action.HARD_KEY_REPORT".equals(intentAction)) { int keyCode = intent.getIntExtra("com.samsung.android.knox.intent.extra.KEY_CODE", -1); int keyReportType = intent.getIntExtra("com.samsung.android.knox.intent.extra.KEY_REPORT_TYPE", -1); if (keyCode == KEYCODE_PTT && keyReportType == 1) { // XCover按键按下 } else if (keyCode == KEYCODE_PTT && keyReportType == 2) { // XCover按键释放 } }
解决方法:
检查Knox SDK版本
com.samsung.android.knox.intent相关API仅在Knox 2.7及以上版本中提供。先确认你当前用的Knox SDK版本,要是版本太低,就去三星开发者后台下载最新的SDK包,替换项目里的旧jar文件。确认依赖配置
用Gradle构建的话,要确保已经正确添加Knox SDK的依赖;如果是本地jar包,得检查它有没有被加入项目依赖库,Android Studio里可以去File > Project Structure > Modules > Dependencies里确认。直接用字符串常量替代类引用
要是暂时找不到对应包,就像上面代码示例那样,直接用字符串形式的Action和Extra名称,不用引用不存在的类。这样哪怕包没找到,只要设备上的Knox框架支持这个广播,代码就能正常编译运行。验证设备兼容性
不是所有XCover设备都支持通过Knox监听PTT按键,得确认目标设备的型号和系统版本是否支持该功能,参考三星官方的设备兼容性列表就行。申请Knox权限
监听这类硬件按键广播需要com.samsung.android.knox.permission.KNOX_HARD_KEY权限,要在AndroidManifest.xml里声明,Android 6.0及以上版本还要在运行时请求这个权限。
内容的提问来源于stack exchange,提问作者Juan Maggi

