React Native使用react-native-shared-group-preferences检测应用安装状态异常
解决建议
1. 补充Android权限配置
针对Android 11(API 30)及以上版本,检测应用安装状态需要声明对应权限或查询规则。在android/app/src/main/AndroidManifest.xml中添加以下内容:
- 若需检测任意应用,添加全量查询权限:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
- 若仅需检测特定应用(更合规),添加定向查询标签:
<queries> <package android:name="com.google.android.youtube" /> <!-- 可追加其他需要检测的包名 --> </queries>
添加后执行清理并重新编译:
cd android && ./gradlew clean && cd .. && npx react-native run-android
2. 验证API调用正确性
检查库的方法调用是否符合版本要求:
- 确认
SharedGroupPreferences导入路径无误,无拼写错误 - 尝试调用通用检测方法替代平台专属方法:
const isAppInstalled = await SharedGroupPreferences.isAppInstalled(packageName);
若仍报错,查看本地安装的库文档(node_modules/react-native-shared-group-preferences/README.md)确认正确API格式。
3. 排查版本兼容性
当前使用的react-native-shared-group-preferences@1.1.23可能与RN 0.72.4存在兼容问题,尝试升级库到最新版本:
yarn upgrade react-native-shared-group-preferences
升级后重新编译项目测试。
4. 优化错误日志排查
当前catch块仅打印undefined,无法定位具体问题,修改日志打印逻辑:
catch (e) { console.error('检测失败详情:', e); console.error('错误栈:', e?.stack); }
通过完整错误信息判断是原生层异常还是JS层调用问题。
5. 切换真实设备测试
模拟器可能存在权限模拟异常,在真实Android设备上运行测试,确认问题是否复现。
6. 备选方案:替换为专用库
若上述方法均无效,可替换为专注于应用检测功能的库,比如react-native-app-installed-checker,这类库兼容性更稳定。
内容的提问来源于stack exchange,提问作者JarochoEngineer
相关产品推荐
相关产品推荐

