23.后台弹出界面

Android Q之后的后台弹出需要申请悬浮窗权限(6.0后悬浮窗权限默认关闭,需要动态申请),如果是小米,vivo,oppo需要另外申请权限

/**

* 小米后台弹出界面检测方法

*

* @param context

* @return

*/

public static boolean canBackgroundStart(Context context) {

AppOpsManager ops = null;

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {

ops = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);

}

try {

int op = 10021;

Method method = ops.getClass().getMethod("checkOpNoThrow", new Class[]{int.class, int.class, String.class});

Integer result = (Integer) method.invoke(ops, op, android.os.Process.myUid(), context.getPackageName());

return result == AppOpsManager.MODE_ALLOWED;

} catch (Exception e) {

}

return false;

}

/**

* 判断vivo后台弹出界面

*

* @param context

* @return

*/

public static boolean getvivoBgStartActivityPermissionStatus(Context context) {

String packageName = context.getPackageName();

Uri uri2 = Uri.parse("content://com.vivo.permissionmanager.provider.permission/start_bg_activity");

String selection = "pkgname = ?";

String[] selectionArgs = new String[]{packageName};

try {

Cursor cursor = context

.getContentResolver()

.query(uri2, null, selection, selectionArgs, null);

if (cursor != null) {

if (cursor.moveToFirst()) {

int currentmode = cursor.getInt(cursor.getColumnIndex("currentstate"));

cursor.close();

return true;

} else {

cursor.close();

return false;

}

}

} catch (Throwable throwable) {

throwable.printStackTrace();

}

return false;

}

24.唯一设备码问题

1.android q之后将不再能获取设备imei码

2.android id在androi8.0之后将不再唯一,即不同应用的获取到的android id不一样 原文如下:

现在,平台改变了标识符的处理方式。 对于在 OTA 之前安装到某个版本 Android 8.0 ( API 级别 26 )的应用,除非在 OTA 后卸载并重新安装,否则 ANDROID_ID 的值将保持不变。要在 OTA 后在卸载期间保留值,开发者可以使用密钥 /值备份关联旧值和新值。 对于安装在运行 Android 8.0 的设备上的应用,ANDROID_ID 的值现在将根据应用签署密钥和用户确定作用域。应用签署密钥、用户和设备的每个组合都具有唯一的 ANDROID_ID 值。因此,在相同设备上运行但具有不同签署密钥的应用将不会再看到相同的 Android ID (即使对于同一用户来说,也是如此)。 只要签署密钥相同(并且应用未在 OTA 之前安装到某个版本的 O ),ANDROID_ID 的值在软件包卸载或重新安装时就不会发生变化。 即使系统更新导致软件包签署密钥发生变化,ANDROID_ID 的值也不会变化。 要借助一个简单的标准系统实现应用获利,请使用广告 ID。广告 ID 是 Google Play 服务针对广告服务提供的唯一 ID,此 ID 可由用户重置。