android禁止分屏实现

发布时间:2021-10-27 09:01:41

?


原文:https://blog.csdn.net/xiangzaixiansheng/article/details/83007411?


??因为很多应用的自身问题,在分屏模式下会出现layout错乱的现象。所以有些应用是不支持分屏模式的。下面我们介绍三种禁止分屏模式的方法。由最简单实用,到稍微麻烦但一律秒杀的。


方法一:


?我们会经常使用的,在AndroidManifest.xml文件中的application节点或者activity节点中添加如下:


android:resizeableActivity="false"
false表示不支持分屏模式,true表示支持分屏模式。


方法二:


我们可以在应用的Activity的onCreate()方法中去添加判断,以禁止分屏模式


? ? ? import android.content.pm.PackageManager.NameNotFoundException;
?
? ? ? if (isInMultiWindowMode()){
? ? ? ? ? ?Context ctx = null;
? ? ? ? ? ?try {
? ? ? ? ?? ?ctx = this.createPackageContext("com.android.systemui",
?? ??? ? ? ? ? ?Context.CONTEXT_INCLUDE_CODE
?? ??? ? ? ? ? ? ? ? ? ?| Context.CONTEXT_IGNORE_SECURITY);
?? ??? ?int stringId = ctx.getResources().getIdentifier(
? ? ? ? ? ? ? ? "dock_non_resizeble_failed_to_dock_text", "string", ctx.getPackageName());
?? ??? ?String toast = ctx.getResources().getString(stringId); ? ? ? ? ? ??
?? ??? ?Toast.makeText(this, toast, Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ?
?? ? ? ? } catch (NameNotFoundException ex) {
?? ? ? ? ? Log.e(TAG, "[onCreate] NameNotFoundException ", ex);?? ?
?? ? ? ? }
? ? ? ? ? ? ?finish();
? ? ? ? }
思路就是调用activity的isInMultiWindowMode()方法去判断是否处在分屏模式下。


方法三:


终极办法,适用于第三方没有源码的apk,我们需要在systemui中去修改。


packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
?
///导包
import android.widget.Toast;
import android.app.ActivityManager.RunningTaskInfo;
?
?
///添加如下两个方法
?
? ? ?public String getTopActivityPackageName()
? ? ? ? {
? ? ? ? ? ? String topActivityPackageName = null;
? ? ? ? ? ? try{
? ? ? ? ? ? ? ? ActivityManager manager = (ActivityManager)getContext().getSystemService(Context.ACTIVITY_SERVICE);
? ? ? ? ? ? ? ? List list = manager.getRunningTasks(1);
? ? ? ? ? ? ? ? if(list != null &&!list.isEmpty() &&list.size()!=0&&list.get(0)!=null&&list.get(0).topActivity!=null){
? ? ? ? ? ? ? ? ? ? topActivityPackageName =(list.get(0).topActivity).getPackageName();
? ? ? ? ? ? ? ? ? ? Log.i(TAG, "getTopActivityPackageName = "+ topActivityPackageName);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }catch(Exception e){
? ? ? ? ? ? ? ? ? ? Log.i(TAG,e.toString());
? ? ? ? ? ? ? ? }
? ? ? ? ? ? return topActivityPackageName;
? ? ? ? }
?
?
? ? private boolean onLongPressRecents() {
? ? ? ? if (mRecents == null || !ActivityManager.supportsMultiWindow(getContext())
? ? ? ? ? ? ? ? || !mDivider.getView().getSnapAlgorithm().isSplitScreenFeasible()
? ? ? ? ? ? ? ? || Recents.getConfiguration().isLowRamDevice) {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? ///新增判断
? ? ? ? if ("第三方应用的包名".equals(getTopActivityPackageName())) {
? ? ? ? ? ? Toast.makeText(getContext(), R.string.dock_non_resizeble_failed_to_dock_text,
? ? ? ? ? ? ? ? Toast.LENGTH_SHORT).show();
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? ///}@
?
? ? ? ? return mStatusBar.toggleSplitScreenMode(MetricsEvent.ACTION_WINDOW_DOCK_LONGPRESS,
? ? ? ? ? ? ? ? MetricsEvent.ACTION_WINDOW_UNDOCK_LONGPRESS);
? ? }
?
?

相关文档

  • 问题:如何看待国内PMP考试通过率高达97%?
  • 小学最有名的唐诗作品
  • python生成五位随机数_使用 Java Math.random() 生成指定位数随机数 对应 python 生成指定位数随机数...
  • 初中周记400字初中生周记400字400字初中周记
  • 7.14情人节感人的表白语
  • 安全责任书范文三篇
  • 新版个人档案自我鉴定600字以上
  • 师范生教育实习工作总结精选
  • 职场手机礼仪知多少
  • 出纳的年度工作计划精选
  • 夏季应该怎样才能减肥更有效果
  • 家用抽油烟机维修常识
  • 基于Hash摘要签名的公网URL签名验证设计方案
  • 名人励志成功经典语录
  • 户外攀岩的7种装备
  • marinoinfantry是什么牌子 marinoinfantry官网
  • 小猫过生日的童话故事
  • 微信心情难过的个性签名
  • 监理工程师年度工作总结报告
  • 2013年高考英语作文万能句:表预示后果
  • 皮肤康洗液怎么用
  • 2018山西省直属事业单位招聘2018年浙江省宁波市城市管理局直属事业单位赴武汉大学招聘公告3人
  • 医院智能化平台规划设计探索论文
  • 缺陷往往就是你本身的优势
  • 怎么把照片的大小变小
  • 新版银行领导讲话心得体会多篇
  • 2018流感疫苗接种多久会产生抗体2018流感疫苗接种注意事项
  • 入团申请书优秀范文高中500字
  • 公司可以去税务局领取手撕发票吗
  • 学校消防安全措施
  • 猜你喜欢

    电脑版