由于Android6.0以后系统将权限分为普通权限和危险权限,还有两个特殊权限SYSTEM_ALERT_WINDOW(设置悬浮窗,进行一些黑科技)和WRITE_SETTINGS(修改系统设置),因此对于权限的申请,除了要在manifest中声明权限,还需要在运行时动态申请权限。所以某些操作会因权限问题,而使App无法正常使用,甚至崩溃。
而为了兼容Android7.0以上系统的调用系统安装器功能,可以有两种解决方案:
第一,targetSdk设置成小于23的值,方式可行但不推荐
第二,将安装的代码修改为
然后,manifest文件注册:
res建个xml文件夹
注意:以上需要获取读写内存权限,在不属于自己app的目录写入文件是不负责任的行为。写到自己的data或者cache目录就不需要申请权限了。
getCacheDir()方法用于获取/data/data/application package/cache目录
getFilesDir()方法用于获取/data/data/application package/files目录
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。