华为手机logcat不打印错误日志方法

我用的华为X1,差不多1年了,其他都还好,但是就是打印日志很蛋疼,Log.d肯定是不会打印的,Log.e偶尔打印,不打印d就算了,可以用Log.i,但是不打印e就老火了,经常APP挂 了也看不到异常日志,只有用他人的手机测试,令俺老火万分啊!最近朋友给我了一个好方法,哈哈,特此记录下,原来是手机的日志打印系统给关闭了,因为一般人也用不到日志,上图:


拨号键盘输入*#*#2846579#*#*,然后选择ProhectMenu,然后后台设置,然后LOG设置,LOG打开。

注意:这里有个后台设置,是需要密码的,不用改那个,只打开LOG设置就好了

这样就OK,妈妈再也不用担心我的大华为打印不了日志了

<think>好的,我现在要解决用户的问题:UniApp应用已经配置了文件写入权限,但仍然失败,错误信息为null。需要给出解决方案。首先,我需要回顾用户提供的引用内容,看看是否有相关线索。 根据引用[2],安卓6以上需要设置存储权限,用户可能已经配置了WRITE_EXTERNAL_STORAGE权限,但问题依然存在。错误信息为null,可能意味着权限请求未被正确处理,或者有其他权限问题。引用[3]提到华为审核被拒是因为未同步告知权限使用目的,这可能影响到权限的实际获取,即使配置了权限,如果没有正确提示用户,系统可能拒绝。 接下来,我需要分步骤思考可能的原因和解决方案。首先检查权限配置是否正确,包括manifest.json中的设置。然后,确认运行时是否动态申请了权限,因为安卓需要动态权限申请。另外,检查文件路径是否正确,是否有写入权限的目录,比如外部存储或应用私有目录。错误信息为null可能意味着底层API没有返回具体错误,需要查看日志或使用调试工具。 还要考虑同平台的差异,比如iOS和安卓的同处理方式。用户提到错误信息为null,可能需要使用原生调试工具或日志来捕获更详细的信息。此外,权限申请时的提示信息是否符合华为等应用市场的要求,如引用[3]所述,必须明确告知用户权限用途。 可能的解决方案步骤包括:1. 确认权限配置正确;2. 动态申请权限并处理回调;3. 检查文件路径的有效性;4. 添加详细的错误日志;5. 确保权限申请提示明确;6. 测试同设备和系统版本;7. 使用原生插件或模块处理权限问题。 需要验证这些步骤是否覆盖了用户的问题,特别是动态权限申请和路径问题。同时,错误信息为null可能需要更深入的日志分析,或者检查UniApp API的使用是否正确。例如,写入文件的代码是否有误,导致异常未被捕获,从而返回null错误。 最后,综合所有可能性,形成结构清晰的解决方案,逐步排查问题,确保用户能按照步骤检查和解决问题。</think>针对UniApp文件写入权限已配置但仍失败且错误信息为null的问题,可按照以下步骤排查和解决: --- ### 一、检查权限配置完整性 1. **确认manifest.json配置** 在`manifest.json`的`app-plus`→`distribute`→`android`节点下,检查是否勾选`android.permission.WRITE_EXTERNAL_STORAGE`权限[^2]。 ```json "permissions": [ "android.permission.WRITE_EXTERNAL_STORAGE" ] ``` 2. **华为设备特殊要求** 若涉及华为设备,需在权限申请时同步弹窗说明用途(如“用于保存上传的图片”),否则可能被系统拦截[^3]。 --- ### 二、动态权限申请逻辑 1. **添加运行时权限申请代码** 即使配置了权限,Android 6+仍需动态申请: ```javascript uni.authorize({ scope: 'scope.writeStorage', success: () => { /* 写入操作 */ }, fail: (err) => { console.log('权限拒绝:', err) } }) ``` 2. **处理权限拒绝后的引导** 若用户拒绝,需提示跳转设置页: ```javascript uni.showModal({ content: '需要存储权限保存文件', success: (res) => { if (res.confirm) uni.openSetting() } }) ``` --- ### 三、文件路径与API使用验证 1. **使用合法存储路径** 避免直接使用`/sdcard/`等路径,推荐通过API获取: ```javascript const path = plus.io.PUBLIC_DOWNLOADS + '/example.txt' // 系统公共下载目录 ``` 2. **检查写入代码逻辑** 使用`uni.saveFile`或`plus.io`原生API时,确保异步操作正确处理: ```javascript plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, (fs) => { fs.root.getFile('test.txt', { create: true }, (fileEntry) => { fileEntry.createWriter((writer) => { writer.write('内容'); }, (error) => { console.log('写入失败:', error) }); }); }); ``` --- ### 四、错误信息深度排查 1. **开启详细日志调试** 在`manifest.json`中开启`debug: true`模式,通过Android Studio的Logcat过滤`console`日志,查看底层Native报错。 2. **捕获Promise异常** 使用`try-catch`包裹异步操作: ```javascript try { await uni.writeFile({ filePath: path, data: 'test' }) } catch (e) { console.error('捕获到错误:', e.message) } ``` --- ### 五、设备与系统兼容性测试 1. **测试多品牌设备** 部分厂商(如小米、华为)可能限制后台写入,需在“应用权限管理”中手动开启“允许修改系统设置”。 2. **检查Android版本差异** Android 11+引入作用域存储(Scoped Storage),需适配`File Access API`或改用`MediaStore`接口。 --- ### 六、替代方案 若仍无法解决,可尝试以下方案: 1. **使用uni.downloadFile** 直接下载文件到缓存目录: ```javascript uni.downloadFile({ url: 'https://example.com/file.txt', success: (res) => { console.log('临时路径:', res.tempFilePath) } }) ``` 2. **集成Native.js插件** 通过原生代码绕过限制(需谨慎处理兼容性): ```javascript const Intent = plus.android.importClass('android.content.Intent') const Settings = plus.android.importClass('android.provider.Settings') ``` ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值