安卓应用禁止分屏模式方法 | 您所在的位置:网站首页 › 安卓分屏桌面怎么关闭 › 安卓应用禁止分屏模式方法 |
因为很多应用的自身问题,在分屏模式下会出现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); }
|
CopyRight 2018-2019 实验室设备网 版权所有 |