Android 6~11版本适配

时间:2025-03-08 21:58:41

1、强制分区存储(ScopedStorage)解决方案:—manifest里面加属性preserveLegacyExternalStorage,保证覆盖安装没问题,好让开发者完成数据迁移的工作;—getExternalFilesDir(),getExternalCacheDir()读取电话号码需要权限READ_PHONE_NUMBERS;自定义Toast,不允许在后头显示了;获取其他应用的信息,比如包名,名称等等—必须在清单文件中添加queries元素;—QUERY_ALL_PACKAGES权限;无障碍辅助功能需要使用flagRequestAccessibilityButton标记声明关联;请求的权限数月未使用,系统会通过自动重置用户已授予应用的运行时敏感权限;—可以引导用户去设置页面关闭自动重置权限功能;前台Service需要访问位置信息、摄像头和麦克风;—manifest添加foregroundServiceType属性;

2、通知渠道,NotificationChannel;安装apk,需要权限REQUEST_INSTALL_PACKAGES;悬浮窗适配,type必须用TYPE_APPLICATION_OVERLAY,还需要声明权限;透明主题Activity,不能有属性screenOrientation;(1后修复了)用什么权限就得去申请什么权限;后台执行限制,startService可能报错IllegalStateException,得用startForegroundService;桌面图标,适配添加ic_launcher_round;移除了所有的隐式广播接收器,只能在应用活着的时候,显式注册了;

3、共享文件,得使用FileProvider;PopupWindow位置不正确,使用update(),Gravity导致的;(这个不属于适配问题,只是在这个版本有问题)一些隐式广播必须动态注册了:CONNECTIVITY_ACTIONACTION_NEW_PICTUREACTION_NEW_VIDEOToast导致的BadTokenException;(这个不属于适配问题,只是在这个版本有问题)解决方案:—利用反射机制,改由我们自己Handler处理Toast的显示,并添加BadTokenException异常捕获;https://blog.****.net/joye123/article/details/支持多窗口支持(分屏模式);

4、Http请求,默认停止明文传输,建议用https;解决方案:—manifest里面加属性networkSecurityConfig—建议用https前台服务,startForegroundService,必须加权限FOREGROUND_SERVICE;ApacheHTTP客户端弃用,需要manifest里加uses-library;对使用非SDK接口的限制;

5、运行时权限检查,checkSelfPermission(),requestPermissions();移除Appache的HTTPClient,需要build.gradle里加useLibrary;

6、分区存储(ScopedStorage)解决方案:—manifest里面加属性requestLegacyExternalStorage—getExternalFilesDir(),getExternalCacheDir()剪切板,只能在前台页面获取焦点后才能访问;深色主题;后台定位权限,ACCESS_BACKGROUND_LOCATION;应用处于后台时,无法启动Activity;对不可重置的设备标识符实施了限制,READ_PRIVILEGED_PHONE_STATE;