Android 12适配记录

Google 正式推出的系统,两年后都会强制要求在Google Play上架需要适配,比如今年推出Android99,两年后target小于99就不让在Google play上架了。同时Google play严禁应用内置其他下载途径,会触犯【网络和设备滥用】。

Android12 适配其实很简单,大多数应用只需修改以下几点。

target

修改为31即可。

PendingIntent

flag修改为 FLAG_IMMUTABLE 或者或上 FLAG_IMMUTABLE 即可。

exported

在使用了 intent-filter 的组件上修改 exported = true 即可。

require 包名

要访问的其他app的包名,要提前声明

    <queries>
        <package android:name="com.whatsapp" />
        <package android:name="com.facebook.katana" />
        <package android:name="com.facebook.orca" />
        <package android:name="com.twitter.android" />
        <package android:name="com.tencent.tim" />
        <package android:name="com.tencent.mm" />
        <package android:name="com.sina.weibo" />
        <package android:name="com.tencent.mobileqq" />
        <package android:name="com.instagram.android" />
        <package android:name="jp.naver.line.android" />
    </queries>

BLE

增加以下权限并请求

	// app模拟蓝牙设备时使用
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    // app连接外围设备时使用
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    // app扫描外围设备时使用
    <uses-permission
        android:name="android.permission.BLUETOOTH_SCAN"
        android:usesPermissionFlags="neverForLocation" />

    ArrayList<String> permissions = new ArrayList<>();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            permissions.add(Manifest.permission.BLUETOOTH_SCAN);
            permissions.add(Manifest.permission.BLUETOOTH_CONNECT);
        } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
            permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
        } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
            permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
        }   

		BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
            if (!bluetoothAdapter.isEnabled()) {
                // Android 12没有权限,去打开蓝牙,会gg!!!
                new RxPermissions(mActivity).requestEachCombined(Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT)
                        .subscribe(new Consumer<Permission>() {
                            @Override
                            public void accept(Permission permission) throws Exception {
                                Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                                startActivityForResult(enableBtIntent, OPEN_REQUEST_CODE);
                            }
                        }, new Consumer<Throwable>() {
                            @Override
                            public void accept(Throwable throwable) throws Exception {

                            }
                        });
            }else {
                requestBlePermision(permissions.toArray(new String[permissions.size()]))    

            }        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值