2023年12月9日发(作者:戴尔电脑官网首页)
Android锁屏下显示来电通知界面
1. 新建Activity,并在activity的onCreate()方法中设置flags
@Override
protected void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
getWindow().addFlags(_DISMISS_KEYGUARD //解锁
| _KEEP_SCREEN_ON //保持屏幕不息屏
| _TURN_SCREEN_ON);//点亮屏幕
if (_INT > 27) {
setShowWhenLocked(true);
} else {
getWindow().addFlags(_SHOW_WHEN_LOCKED);
}
Params params = getWindow().getAttributes();
//低调模式, 会隐藏不重要的状态栏图标,/QQsongQQ/article/details/89312763
UiVisibility = _UI_FLAG_LOW_PROFILE;
getWindow().setAttributes(params);
setContentView(ty_call);
}
2. 在中配置activity,并加入锁屏显示权限
android:screenOrientation="portrait" android:launchMode="singleInstance"/> 3. 启动Activity wakeUpAndUnlock(getApplicationContext()); startActivity(new Intent(getApplication(), ).addFlags(_ACTIVITY_NEW_TASK | _ACTIVITY_CLEAR_TOP)); public void wakeUpAndUnlock(Context context) { //屏锁管理器 KeyguardManager km = (KeyguardManager) temService(RD_SERVICE); rdLock kl = guardLock("unLock"); //解锁 eKeyguard(); //获取电源管理器对象 PowerManager pm = (PowerManager) temService(_SERVICE); //获取ck对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag ck wl = eLock(E_CAUSES_WAKEUP | _DIM_WAKE_LOCK, //点亮屏幕 e(); //释放 e(); } 注意:覆盖锁屏显示这个功能在某些手机上需要“锁屏显示”权限,目前只能用户自己开启,无法通过代码申请。 附上国内各大厂商跳转到权限的代码 public class PermissionUtil { /** /** * CTURER判断各大手机厂商品牌 */ private static final String MANUFACTURER_HUAWEI = "Huawei";//华为 private static final String MANUFACTURER_MEIZU = "Meizu";//魅族 private static final String MANUFACTURER_XIAOMI = "Xiaomi";//小米 private static final String MANUFACTURER_SONY = "Sony";//索尼 private static final String MANUFACTURER_OPPO = "OPPO"; private static final String MANUFACTURER_LG = "LG"; private static final String MANUFACTURER_VIVO = "vivo"; private static final String MANUFACTURER_SAMSUNG = "samsung";//三星 private static final String MANUFACTURER_LETV = "Letv";//乐视 private static final String MANUFACTURER_ZTE = "ZTE";//中兴 private static final String MANUFACTURER_YULONG = "YuLong";//酷派 private static final String MANUFACTURER_LENOVO = "LENOVO";//联想 public static boolean isAppSettingOpen = false; public static final int PERMISSION_SETTING_FOR_RESULT = 0x100; /** * 跳转到相应品牌手机系统权限设置页,如果跳转不成功,则跳转到应用详情页 * 这里需要改造成返回true或者false,应用详情页:true,应用权限页:false * * @param activity */ public static void GoToSetting(Activity activity) { switch (CTURER) { case MANUFACTURER_HUAWEI://华为 Huawei(activity); break; case MANUFACTURER_MEIZU://魅族 Meizu(activity); break; case MANUFACTURER_XIAOMI://小米 Xiaomi(activity); break; case MANUFACTURER_SONY://索尼 Sony(activity); break; case MANUFACTURER_OPPO://oppo OPPO(activity); break; case MANUFACTURER_LG://lg LG(activity); break; case MANUFACTURER_LETV://乐视 Letv(activity); break; default://其他 try {//防止应用详情页也找不到,捕获异常后跳转到设置,这里跳转最好是两级,太多用户也会觉得麻烦,还不如不跳 openAppDetailSetting(activity); } catch (Exception e) { SystemConfig(activity); } break; } } /** * 华为跳转权限设置页 * * @param activity */ public static void Huawei(Activity activity) { try { Intent intent = new Intent(); gs(_ACTIVITY_NEW_TASK); ra("packageName", ATION_ID); ComponentName comp = new ComponentName("manager", "tivity"); ponent(comp); ctivityForResult(intent, PERMISSION_SETTING_FOR_RESULT); isAppSettingOpen = false; } catch (Exception e) { } catch (Exception e) { openAppDetailSetting(activity); } } /** * 魅族跳转权限设置页,测试时,点击无反应,具体原因不明 * * @param activity */ public static void Meizu(Activity activity) { try { Intent intent = new Intent("_APPSEC"); egory(RY_DEFAULT); ra("packageName", ATION_ID); ctivity(intent); isAppSettingOpen = false; } catch (Exception e) { openAppDetailSetting(activity); } } /** * 小米,功能正常 * * @param activity */ public static void Xiaomi(Activity activity) { try { // MIUI 8 9 Intent localIntent = new Intent("_PERM_EDITOR"); ssName("tycenter", "sionsEditorActivity"); ra("extra_pkgname", kageName()); ctivityForResult(localIntent, PERMISSION_SETTING_FOR_RESULT); isAppSettingOpen = false; } catch (Exception e) { try { // MIUI 5/6/7 Intent localIntent = new Intent("_PERM_EDITOR"); ssName("tycenter", "missionsEditorActivity"); ra("extra_pkgname", kageName()); ctivityForResult(localIntent, PERMISSION_SETTING_FOR_RESULT); isAppSettingOpen = false; } catch (Exception e1) { // 否则跳转到应用详情 openAppDetailSetting(activity); } } } /** * 索尼,6.0以上的手机非常少,基本没看见 */ public static void Sony(Activity activity) { try { Intent intent = new Intent(); gs(_ACTIVITY_NEW_TASK); ra("packageName", ATION_ID); ComponentName comp = new ComponentName("", "AMainActivity"); ponent(comp); ctivity(intent); isAppSettingOpen = false; } catch (Exception e) { openAppDetailSetting(activity); } } /** * OPPO * @param activity */ public static void OPPO(Activity activity) { try { Intent intent = new Intent(); gs(_ACTIVITY_NEW_TASK); ra("packageName", ATION_ID); ComponentName comp = new ComponentName("nter", "sionManagerActivity"); ComponentName comp = new ComponentName("nter", "sionManagerActivity"); ponent(comp); ctivity(intent); isAppSettingOpen = false; } catch (Exception e) { openAppDetailSetting(activity); } } /** * LG经过测试,正常使用 * * @param activity */ public static void LG(Activity activity) { try { Intent intent = new Intent(""); gs(_ACTIVITY_NEW_TASK); ra("packageName", ATION_ID); ComponentName comp = new ComponentName("gs", "gs$AccessLockSummaryActivity"); ponent(comp); ctivity(intent); isAppSettingOpen = false; } catch (Exception e) { openAppDetailSetting(activity); } } /** * 乐视6.0以上很少,基本都可以忽略了,现在乐视手机不多 * @param activity */ public static void Letv(Activity activity) { try { Intent intent = new Intent(); gs(_ACTIVITY_NEW_TASK); ra("packageName", ATION_ID); ComponentName comp = new ComponentName("fe", "sionAndApps"); ponent(comp); ctivity(intent); isAppSettingOpen = false; } catch (Exception e) { openAppDetailSetting(activity); } } /** * 只能打开到自带安全软件 * @param activity */ public static void _360(Activity activity) { try { Intent intent = new Intent(""); gs(_ACTIVITY_NEW_TASK); ra("packageName", ATION_ID); ComponentName comp = new ComponentName("safe", "erActivity"); ponent(comp); ctivity(intent); } catch (Exception e) { openAppDetailSetting(activity); } } /** * 系统设置界面 * @param activity */ public static void SystemConfig(Activity activity) { Intent intent = new Intent(_SETTINGS); ctivity(intent); } /** * 获取应用详情页面 * 获取应用详情页面 * @return */ private static Intent getAppDetailSettingIntent(Activity activity) { Intent localIntent = new Intent(); gs(_ACTIVITY_NEW_TASK); ion("ATION_DETAILS_SETTINGS"); a(rts("package", kageName(), null)); return localIntent; } public static void openAppDetailSetting(Activity activity) { ctivityForResult(getAppDetailSettingIntent(activity), PERMISSION_SETTING_FOR_RESULT); isAppSettingOpen = true; } }
发布者:admin,转转请注明出处:http://www.yc00.com/num/1702110797a1176669.html
评论列表(0条)