推广

安卓系统适配6.0-10.0

iseeyu2年前 (2024-02-22)推广111

微信图片_20210226095247.jpg

7.0 PopupWindow位置不正确

代码来源:https://blog.csdn.net/qq_17766199/article/details/77404712

if (Build.VERSION.SDK_INT >= 24) { // Android 7.x中,PopupWindow高度为match_parent时,会出现兼容性问题,需要处理兼容性
    int[] location = new int[2]; // 记录anchor在屏幕中的位置
    anchor.getLocationOnScreen(location);
    int offsetY = location[1] + anchor.getHeight();
    if (Build.VERSION.SDK_INT >= 25) { // Android 7.1 ,8.0中,PopupWindow高度为 match_parent 时,会占据整个屏幕
        // 故而需要在 Android 7.1上再做特殊处理
        int screenHeight = ScreenUtils.getScreenHeight(context); // 获取屏幕高度
        popupWindow.setHeight(screenHeight - offsetY); // 重新设置 PopupWindow 的高度
    }
    popupWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, 0, offsetY);
} else {
    popupWindow.showAsDropDown(anchor);
}

7.0 三个广播被禁止监听或发送

在后台时不再能接收到 CONNECTIVITY_CHANGE 广播,前台不影响。
不能发送或是接收新增图片(ACTION_NEW_PICTURE)和新增视频(ACTION_NEW_VIDEO) 的广播。

8.0 Oreo 26-27

8.0 安装apk

安卓8.0去除了“允许未知来源”选项,如果apk里边有安装apk的功能(如应用更新),需用canRequestPackageInstalls()查询是否有此权限,没有的话用Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES这个action引导用户到安装未知来源应用界面去授权。

代码示例来源:https://blog.csdn.net/qq_17766199/article/details/80965631

    private static final int REQUEST_CODE_UNKNOWN_APP = 100;

    private void installAPK(){

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            boolean hasInstallPermission = getPackageManager().canRequestPackageInstalls();
            if (hasInstallPermission) {
                //安装应用
            } else {
                //跳转至“安装未知应用”权限界面,引导用户开启权限
                Uri selfPackageUri = Uri.parse("package:" + this.getPackageName());
                Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, selfPackageUri);
                startActivityForResult(intent, REQUEST_CODE_UNKNOWN_APP);
            }
        }else {
            //安装应用
        }

    }

    //接收“安装未知应用”权限的开启结果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_UNKNOWN_APP) {
            installAPK();
        }
    }


8.0广播

静态注册广播 – 在AndroidManifest.xml中设置,程序不用启动亦可接收。 典型代表:很多开机启动的APP,都是接收开机启动广播带起服务的。
动态注册广播 – 代码中注册广播,程序未启动时,无法接收广播。 、
典型代表:Go短信,将Go短信强行停止,Go短信无法接收短信。

静态广播无法清单注册,动态的可以。

Google官方声明:从android 8.0(API26)开始,对清单文件中静态注册广播接收者增加了限制,建议大家不要在清单文件中静态注册广播接收者,改为动态注册。当然,如果你还是想用静态注册的方式也是有方法的,Intent里添加Component参数可实现。

8.0通知权限Notification

Android 8.0之后通知权限默认都是关闭的,无法默认开启以及通过程序去主动开启,需要程序员读取权限开启情况,然后提示用户去开启。

代码来源:https://blog.csdn.net/yinhaide/article/details/103295050

/**
 * 判断通知权限是否开启
 * @param context 上下文
 */
public static boolean isNotificationEnabled(Context context){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).areNotificationsEnabled();
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
        ApplicationInfo appInfo = context.getApplicationInfo();
        String pkg = context.getApplicationContext().getPackageName();
        int uid = appInfo.uid;

        try {
            Class<?> appOpsClass = Class.forName(AppOpsManager.class.getName());
            Method checkOpNoThrowMethod = appOpsClass.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE, String.class);
            Field opPostNotificationValue = appOpsClass.getDeclaredField("OP_POST_NOTIFICATION");
            int value = (Integer) opPostNotificationValue.get(Integer.class);
            return (Integer) checkOpNoThrowMethod.invoke(appOps, value, uid, pkg) == 0;
        } catch (NoSuchMethodException | NoSuchFieldException | InvocationTargetException | IllegalAccessException | RuntimeException | ClassNotFoundException ignored) {
            return true;
        }
    } else {
        return true;
    }
}
//前往设置开启权限
/**
 * 打开设置页面打开权限
 *
 * @param activity activity
 * @param requestCode 这里的requestCode和onActivityResult中requestCode要一致
 */
public static void startSettingActivity(@NonNull Activity activity, int requestCode) {
    try {
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + activity.getPackageName()));
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        activity.startActivityForResult(intent, requestCode);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
————————————————
版权声明:本文为CSDN博主「尹海德」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yinhaide/article/details/103295050

9.0 Pie 28

自 Android 6 发布,就移除了对 Apache HTTP 客户端的支持,而推荐改用 HttpURLConnection 类,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量

10.0 Q 29

最大的变化是用户隐私权

10.0 存储权限

Android Q 在外部存储设备中为每个应用提供了一个“隔离存储沙盒”(例如 /sdcard)。任何其他应用都无法直接访您应用的沙盒文件。由于文件是您应用的私有文件,因此您不再需要任何权限即可在外部存储设备中访问和保存自己的文件。此变更可让您更轻松地保证用户文件的隐私性,并有助于减少应用所需的权限数量。

·访问自己程序的文件,不需要请求权限,取消了READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限
·访问沙盒外的媒体共享文件,需申请新的媒体权限,READ_MEDIA_IMAGESREAD_MEDIA_AUDIOREAD_MEDIA_IMAGES
·

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56397.html

相关文章

淘宝脱敏订单信息:订单粉将退出历史舞台

淘宝脱敏订单信息:订单粉将退出历史舞台

最近松松编辑杰哥从电商圈了解到,阿里近期开启大规模商家订单系统整改行动通知,要求所有8-15日之前按照阿里的最新的脱敏规则升级整改自己店铺的的订单相关系统,逾期不修改的大力处罚,订单粉将彻底退出历史舞台! 根据杰哥从圈内了解的阿里发布的公告表示得知:阿里平台将启动订单处理链路的消费者敏感信...

景区如何做软文营销推广? 教你提高游客量

景区如何做软文营销推广? 教你提高游客量

哈喽,大家好,今天小编又来跟大家分享软文的了,本篇分享的主要是:景区如何做软文推广? 教你提高游客量 当下,度假早已变成大家日常必不可少的一部分了。那么做为旅游景点或是旅行网站,准备好的度假旅游推广软文该到哪去公布才可以更有实际效果呢? 大家先做一下简易的剖析-群体精准定位...

我来分享q3挪动跨界产业梳理(370页一整套版本)

我来分享q3挪动跨界产业梳理(370页一整套版本)

去年的热门综艺《爸爸去哪儿》第二季使大众看到黄磊的一手好厨艺。”马一木说,他并不是韩寒的粉丝,直到今年要为台湾《联合文学》写稿才看了韩寒的三部作品。携程国内机票订单数携程国内机票订单数由于春运火车票的一票难求,一些人转移到乘坐飞机回家,与火车票12月1日达到峰值不同,12月8日携程国内机票订单数达到...

网站推广:如何获取核心流量词排名。

网站推广:如何获取核心流量词排名。

随着互联网的普及,用户的搜索习惯普遍增多。搜索引擎用户的不断增加和需求的不断增加,让许多中小企业为了赢得搜索用户这个市场,无休止地使用各种营销手段来帮助企业获取客源。因此,企业网站SEO推广运营模式成为大家备受关注的环节。企业网站SEO推广不仅可以宣传产品和企业新闻,但也有助于促进企业品牌的形象,...

网站seo文章优化有哪些技巧呢具体方法有哪些。

网站seo文章优化有哪些技巧呢具体方法有哪些。

在网站优化的过程中,文章的优化是必须要做的,毕竟它是一个非常重要的手段,seo优化它也能够提升网站的排名,当然如果一个网站能够留住用户,那么它的内容一定要吸引眼球,网站内容的基础就是文章的填充,那么优化具有哪些技巧呢? 首先在整个优化的公众文章标题优化是必须要做的,它一定要做到新颖,在搜索引擎中没...

排查网站排名主要因素,稳固提升关键词排名。

排查网站排名主要因素,稳固提升关键词排名。

影响的五大决定性因素 众所周知,一个稳定快速的服务器对于网站的长远发展是非常重要的。如果服务器不够稳定,或者经常进不去,就会影响搜索引擎蜘蛛的正常抓取,自然也不会给网站留下好印象。随着时间的推移,网站会越来越少,从不收录网站内容到慢快照,再从重到重,都会是K希望网站有一个好的发展,好的网...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片