android9.0系统适配遇到的问题

一、apk在9.0以下的系统上安装运行,没有问题。但是在9.0系统上运行会弹出一个框

  解决办法:

private void closeAndroidPDialog() {
try {
Class aClass = Class.forName("android.content.pm.PackageParser$Package");
Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class);
declaredConstructor.setAccessible(true);
} catch (Exception e) {
e.printStackTrace();
}
try {
Class cls = Class.forName("android.app.ActivityThread");
Method declaredMethod = cls.getDeclaredMethod("currentActivityThread");
declaredMethod.setAccessible(true);
Object activityThread = declaredMethod.invoke(null);
Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown");
mHiddenApiWarningShown.setAccessible(true);
mHiddenApiWarningShown.setBoolean(activityThread, true);
} catch (Exception e) {
e.printStackTrace();
}
}

  

二、9.0系统apk自动更新,下载下来apk后无法自动安装,安装界面一闪而逝

  解决办法:在AndroidManifest.xml加入权限,并在程序运行的时候动态申请位置来源权限

   <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

三、9.0系统webview加载问题

android9.0系统适配遇到的问题

解决方法:在AndroidManifest.xml文件中的Application标签添加android:usesCleartextTraffic="true"。

四、需要在AndroidManifest.xml中加入以下普通权限,不然在9.0系统中通知没法显示或者直接报错。

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

五、兼容8.0以上的notification
8.0之前比较常规,按照老方法来就行。8.0以后必须要创建并设置NotificationChannel
上一篇:leetcode650.只有两个键的键盘——leetcode每日一题2021.9.19


下一篇:Hibernate: org.hibernate.exception.SQLGrammarException: could not insert: 错误