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()]))
}