android 授予的权限被关闭导致APP崩溃重启数据发生异常。

复现场景,启动时手机授予APP权限,然后按home键回到主界面,进入设置也关闭APP的某个权限。

解决方案

在baseActivity的onCreate方法中去判断

if(savedInstanceState!=null){
//这里跳转到欢迎页关闭当前页或者其它处理。
}

这样还有一个问题就是在页面横竖屏切换的时候这个savedInstanceState也不为null,所以要处理下横竖屏切换时不要重走生命周期,或者限死横屏或竖屏。

在AndroidManifest.xml修改

限定横\竖屏

activity节点添加android:screenOrientation="portrait" android:screenOrientation="landscape"

切换不重走生命周期

activity节点添加android:configChanges="orientation|keyboardHidden|screenSize"

 

 

<think>好的,我现在需要帮助用户解决在已root的荣耀8青春版手机上使用JavaScript清理淘宝应用缓存,同时保留登录信息的问题。首先,我需要理解用户的需求。用户希望通过JS代码实现这个功能,但可能对Android系统的工作原理和权限不太熟悉。 首先,清理应用缓存通常涉及删除应用在存储中生成的临时文件,这些文件通常位于应用的缓存目录,比如/data/data/com.taobao.taobao/cache。而用户的登录信息通常保存在SharedPreferences或数据库中,这些数据通常位于/data/data/com.taobao.taobao/shared_prefs或/data/data/com.taobao.taobao/databases目录下。所以,理论上,只删除缓存目录的内容而不触及其他目录可以保留登录状态。 不过,用户想用JavaScript来执行这个操作,这有点矛盾,因为JavaScript通常在浏览器或WebView中运行,无法直接访问文件系统。不过,如果手机已root,用户可能通过某些方式在系统层面执行脚本,比如使用Termux或者类似的应用,通过Node.js环境运行JavaScript代码,并调用系统命令。 接下来,我需要考虑如何通过JavaScript调用系统命令来删除缓存目录。在root权限下,可以使用su命令来执行rm -rf命令删除缓存目录。例如,执行`su -c "rm -rf /data/data/com.taobao.taobao/cache/*"`。但需要注意的是,直接使用这样的命令可能有风险,需要确保路径正确,避免误删其他文件。 另外,用户需要确保淘宝应用的进程已经停止,否则可能无法完全清除缓存,或者导致应用崩溃。可以使用`am force-stop com.taobao.taobao`来强制停止应用。 然后,用户需要编写一个JavaScript脚本,通过child_process模块执行这些命令。不过,在移动端环境中,通常没有Node.js的child_process模块,所以可能需要使用其他工具,比如Termux提供的API,或者使用Shell脚本更合适。但用户可能坚持使用JS,所以需要找到在Android环境下运行JS并执行系统命令的方法。 可能的解决方案是使用Termux安装Node.js,然后编写一个Node.js脚本,使用exec函数执行shell命令。这需要用户安装Termux,并给予root权限。同时,用户需要确保淘宝应用的包名正确,可能需要确认com.taobao.taobao是否正确,或者是否有其他变体。 另外,用户需要注意,即使清除了缓存目录,某些应用可能会在下次启动时重新生成必要的令牌或会话信息,所以需要测试是否真的能保留登录状态。如果登录信息存储在缓存目录之外的地方,比如SharedPreferences,那么清理缓存不会影响登录状态。但需要确认淘宝的具体存储机制。 总结步骤可能包括:1. 获取root权限;2. 停止淘宝应用;3. 删除缓存目录;4. 重启应用。这些步骤需要通过脚本实现,并在JS中调用系统命令。 最后,需要提醒用户操作风险,误删系统文件可能导致应用无法运行,甚至系统不稳定,建议备份数据,谨慎操作。</think>要在已root的荣耀8青春版手机上通过JavaScript清理淘宝APP缓存并保留登录信息,需结合系统级操作与脚本执行。以下是分步实现方案: --- ### **步骤1:定位缓存路径** 淘宝APP的缓存目录通常位于: $$/data/data/com.taobao.taobao/cache$$ 登录信息(如Cookies、Session)通常存储在: $$/data/data/com.taobao.taobao/shared_prefs$$ 或 $$/data/data/com.taobao.taobao/databases$$ [^3] --- ### **步骤2:编写JavaScript脚本** 需通过Termux(Android终端模拟器)运行Node.js环境,调用系统命令清理缓存: ```javascript const { exec } = require('child_process'); // 停止淘宝进程避免文件锁定 exec('su -c "am force-stop com.taobao.taobao"', (error) => { if (error) console.error("强制停止失败:", error); // 删除缓存目录内容(保留目录结构) exec('su -c "rm -rf /data/data/com.taobao.taobao/cache/*"', (error) => { if (error) console.error("清理缓存失败:", error); else console.log("缓存已清理,登录状态保留"); }); }); ``` --- ### **步骤3:执行脚本** 1. **安装Termux**:通过应用商店下载并安装。 2. **安装Node.js**: ```bash pkg install nodejs ``` 3. **运行脚本**: ```bash node clean_taobao_cache.js ``` --- ### **关键注意事项** 1. **Root权限**:脚本需通过`su -c`调用系统命令,确保已授予Termux root权限。 2. **路径验证**:确认淘宝包名是否为`com.taobao.taobao`,可通过`pm list packages | grep tao`查询[^1]。 3. **数据安全**:避免误删`shared_prefs`或`databases`目录,否则会导致登录信息丢失。 --- ### **替代方案(Shell脚本更简单)** ```bash #!/system/bin/sh su -c "am force-stop com.taobao.taobao && rm -rf /data/data/com.taobao.taobao/cache/*" ``` ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值