本文主要是介绍android禁止分屏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为很多应用的自身问题,在分屏模式下会出现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);}
关于我
作者简介 :游逸,高级软件工程师,5年开发经验,微信公众号【逸游源码汇】,喜欢分享干货与关注技术前沿,欢迎关注公众号一起交流学习
原文地址:https://blog.csdn.net/xiangzaixiansheng/article/details/83007411
这篇关于android禁止分屏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!