安卓应用禁止分屏模式方法

news/2024/11/8 17:54:56/

原文链接: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<RunningTaskInfo> 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);}

 


http://www.ppmy.cn/news/356622.html

相关文章

android分屏模式_Android分屏显示总结

1. 基础原理 1.1 ActivityRecord、TaskRecord、ActivityStack关系 一个ActivityRecord对应着一个Activity,而一个Activity可能对应着不同的ActivityRecord(因为Activity可能被实例化多次)。一系列的ActivityRecord存在于TaskRecord(一个Task就是用户体验上的一个“应用”,它将…

android 分屏模式适配,安卓适配分屏注意事项

分屏模式下可强制应用横屏,所以注意应用内强制竖屏的页面适配横屏显示 分屏模式下,获取应用所占用的宽高 getResources().getConfiguration().screenWidthDp getResources().getConfiguration().screenHeightDp 多窗口变更通知和查询 //Activity 提供以下方法来支持多窗口显示…

android强制分屏软件,第三方强制分屏app

第三方强制分屏是一款非常好用的手机分屏工具&#xff0c;它的功能非常强大&#xff0c;很轻松就可以分屏&#xff0c;操作简单&#xff0c;新用户也能很快上手&#xff0c;有非常贴心的新手教程&#xff0c;给用户提供了很多的便利&#xff0c;以后就可以一边看电视一边聊天啦…

linux终端下如何分屏,ubuntu terminal 终端分屏

http://blog.csdn.net/liuxiaoheng1992/article/details/54409711 1.sudo apt-get install terminator 2.这个终端程序可以分屏,常用操作快捷键如下: Ctrl+Shift+O Split terminals Horizontally.(上下开新窗口) Ctrl+Shift+E Split terminals Vertically.(垂直开新窗口) Ctr…

系统提示“d3dx9_43.dll丢失、找不到”原因与解决方案

相信很多朋友都有遇到过这种情况&#xff1a;在登陆游戏或打开某个软件时&#xff0c;系统会弹出一个窗口提示&#xff1a;“d3dx9_43.dll丢失” 或 ”d3dx9_43.dll找不到“&#xff0c;出现这种情况一般是系统的不完整性导致&#xff08;非正版系统比较容易出现此问题&#xf…

正则表达式简单应用

5月17日星期四晚8点30分 地点&#xff1a;SEO学院&#xff08;27971958&#xff09; 题目是&#xff1a;正则表达式简单应用 主讲人&#xff1a;孤胆枪手(64049027) 请在自己机器上装好emeditor 及dreamweaver 正则表达式简单应用 正则所有元字符&#xff1a;$(*.[?/^{ …

如果我老了,我希望我们是这样

看到和菜头的八卦整理帖&#xff0c;随便点了几个&#xff0c;最喜欢这一帖&#xff1a; 《父母比我还新潮&#xff0c;常常让我无语啊~~》 &#xff0c;我觉得好玩的回复整理如下&#xff1a;  作者&#xff1a;蝙蝠小姐A回复日期&#xff1a;2006-9-2116:51:31 周末一清早&…

全职高手·地图

普通区城镇&#xff1a; 城镇&#xff1a;新手村。 城镇&#xff1a;布尔斯镇。 场景&#xff1a;空知林。 空积城外&#xff0c;接近一线峡谷的一片小树林。 普通区练级区、野图boss&#xff1a; 20-23级练级区&#xff1a;冰霜森林。 野图boss&#xff1a;哥布林商人洛…