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

因为很多应用的自身问题,在分屏模式下会出现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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值