安卓应用禁止分屏模式方法_游戏禁止分屏怎么回事-程序员宅基地

技术标签: 禁止分屏  禁止安卓应用分屏  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);
    }

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiangzaixiansheng/article/details/83007411

智能推荐

用Python做TensorFlow_python中tensorflow.random_uniform_initializer(minva-程序员宅基地

文章浏览阅读200次。import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tfobservations = 1000xs = np.random.uniform(low=-10, high=10, size=(observations,1))zs = np.random.uniform(-10,10,(observati..._python中tensorflow.random_uniform_initializer(minval=-bound, maxval=bound))

基于小程序的订餐系统+springboot+vue.js附带文章和源代码说明文档ppt-程序员宅基地

文章浏览阅读783次,点赞19次,收藏16次。博主介绍:CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐。

黑马程序员_Android开发者必备的42个链接_黑马程序员android 依赖注入-程序员宅基地

文章浏览阅读813次。---------------------- ASP.Net+Android+IOS开发、.Net培训、 期待与您交流!----------------------下面收集了42个帮助大家学习Android的内容链接,部分内容是面向初学者的,帮助大家从头开始学习Android开发,其他则面向较高级的开发者。希望推荐的这些内容对你有帮助。官方网站1、谷歌Android开发_黑马程序员android 依赖注入

tp5项目上传到服务器,tp5上传到云服务器-程序员宅基地

文章浏览阅读253次。tp5上传到云服务器 内容精选换一换更新后端云服务器,可修改字段为后端云服务器的名称和权重,可以为性能好的服务器设置更大的权重,用来接收更多的流量。如果member绑定的负载均衡器的provisioning status不是ACTIVE,则不能更新该member。PUT /v2/{project_id}/elb/pools/{pool_id}/members/{member华为云帮助中心,为用户提..._tp5加密上传服务器

3、Ktor学习-ApplicationCall简介;-程序员宅基地

文章浏览阅读313次。  处理路由时,将获得ApplicationCall的上下文。  ApplicationCall提供对两个主要属性ApplicationRequest和ApplicationResponse的访问。 如其名称所示,它们对应于传入请求和传出响应。 除此之外,它还提供了一个ApplicationEnvironment,以及一些有用的函数来帮助响应客户端请求。 鉴于管道可以异步执行,Applicati..._ktor call获取响应体

【VRRP主备切换】VRRP&STP&OSPF&NAT&3A_基于vrrp+ospf的主备切换-程序员宅基地

文章浏览阅读3.3k次。实验拓扑实验环境两台PC分属VLAN10与VLAN20,PC1为.10网段,PC2为.20网段SW6为傻瓜交换机SW7,SW8上针对两个VLAN分别做VRRP,同时运行STPR1为路由器,在R1上做NAT,R2模拟外网VRRPVRRP虚拟出一个网关设备,主机填写虚拟网关地址(vrid),主机的所有流量发送到虚拟网关设备,再由虚拟网关设备,发送给真实网关设备进行转发数据。正常情况下由mater网关设备管理这个虚拟MAC地址,转发用户数据。当Master失效后,其他设备其中一个设备成为Maste_基于vrrp+ospf的主备切换

随便推点

Navicat15连接sqlserver数据库失败,提示缺少驱动_msodbcsql_64.msi-程序员宅基地

文章浏览阅读1.2w次,点赞8次,收藏15次。Navicat连接sqlserver数据库提示缺少驱动进入Navicat安装目录双击安装msodbcsql_64.msi再次连接数据库即可成功连接进入Navicat安装目录我的安装目录为 E:\Program Files\PremiumSoft\Navicat Premium 15双击安装msodbcsql_64.msi再次连接数据库即可成功连接..._msodbcsql_64.msi

ZooKeeper命令行工具zkCli的使用_zkcli.sh连接集群-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏3次。本次来讲命令行工具zkCli.sh的使用,这个工具对运维人员是非常重要的,许多对zk的管理操作都需要使用它来进行。作为一个示例,我会用zkCli.sh来创建一个主从模式系统,当然这只是作为演示,对开发人员来说不会这样操作。 首先需要配置zk的环境变量保证zkCli.sh能正常执行,这个过程省略。 连接zk集群使用命令zkCli.sh -server host:port,_zkcli.sh连接集群

达梦数据库merge into更新多个字段,插入特定字段的使用_达梦merge into-程序员宅基地

文章浏览阅读660次。这个示例问题,就是只介绍了一个字段更新时的情况,还只介绍了全字段更新的情况,这种情况算是比较特殊了,想更新多个字段,插入部分字段怎么写呢?查阅了一些资料,得到的结论是。有一点需要注意的,我用以下方式时候报错,所以还是能将表起别名就起个别名,用起来也方便。在达梦数据库的官方文档里有介绍merge into的用发,可以参考。这个示例里用到的语句是。_达梦merge into

工作6年,谈谈我对“算法岗”的理解_箅法岗-程序员宅基地

文章浏览阅读3.6k次,点赞47次,收藏154次。写在前面:本文完全基于我个人的工作经验,没有经过任何形式的行业调研,所以我的理解也有相当浓厚的个人印记,可以认作一家之言。如果能对读者朋友们起到任何帮助,都是我的荣幸。如果不赞同我的看法,则还请一笑了之。大家好,我是Severus,一个在某厂做中文文本理解的程序员。今天我想要分享的是,在算法岗工作6年之后,我心中对“算法岗”的理解,以及我在这个职业中,是如何生存的。我时常提到,“AI算法工程师”分为两个部分,“AI算法”和“工程师”。二者的关系是:算法工程师,首先得是个工程师。有了 idea.._箅法岗

二叉排序树BST+求树深度算法_设计求二叉排序树深度的算法-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏2次。#include "stdio.h"#include "malloc.h"typedef struct node { int key; struct node *lchild, *rchild; }BSTNode, *BSTree;void InsertBST(BSTree *bst, int key){ BSTree s; if (*bst == NULL) { s_设计求二叉排序树深度的算法

c++01背包模版_c++ 背包模板-程序员宅基地

文章浏览阅读668次。01背包dp先找个题目装箱问题需要考虑的就是这件物品放不放题目要求所有物品体积价值最大最后再减一下就好了#include<bits/stdc++.h>using namespace std;int maxv, n;int f[35][20005];//答案存在这!int v[35];//这件物品所需空间int main() { cin >> maxv >> n; for (int i = 1; i <= n; i++) cin >&_c++ 背包模板

推荐文章

热门文章

相关标签