有个扫描病毒的需求,扫描已安装的程序哪些是病毒,然后提醒用户卸载。
在 Android 中使用 Intent.ACTION_DELETE 是一种触发卸载应用程序的方法。通常情况下,这是通过用户界面引导用户进行卸载操作,而不是程序直接卸载应用程序。这是因为卸载应用程序是一项敏感的操作,Android 系统要求用户明确同意才能进行。
val intent = Intent(Intent.ACTION_DELETE)
intent.data = Uri.parse("package:$packageName")
startActivity(intent)
在这段代码中,将 packageName 替换为您希望卸载的应用的包名。这会启动一个系统的卸载界面,让用户确认卸载操作。这里有个小小的卡点,记录下来,那就是遇到了在高版本上点击无反应,页面闪一下不跳转,也没有抛出异常。低版本上直接弹出卸载弹框点击卸载即可。
解决办法:
权限问题:您的应用可能没有足够的权限执行卸载操作。卸载其他应用需要 REQUEST_DELETE_PACKAGES 权限,该权限只能由系统应用或设备管理器应用使用。普通应用无法直接获得此权限,因此不能通过 Intent.ACTION_DELETE 卸载其他应用。
清单文件中声明卸载权限即可,这个权限不需要动态申请让用户同意。
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>
<!-- 其他应用配置 -->
</manifest>