精华内容
下载资源
问答
  • AndroidManifest中添加: <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.SYSTEM_...

    在AndroidManifest中添加:

    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    

    然后直接调用这个封装好的类就行:

    public class WindowPermissionCheck {
    
        public static boolean checkPermission(Activity activity){
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                    && !Settings.canDrawOverlays(activity)) {
                Toast.makeText(activity, "当前无权限,请授权", Toast.LENGTH_SHORT).show();
                activity.startActivityForResult(
                        new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                                Uri.parse("package:" + activity.getPackageName())), 0);
                return false;
            }
            return true;
        }
    
        public static void onActivityResult(Activity activity,
                                            int requestCode,
                                            int resultCode,
                                            Intent data,
                                            OnWindowPermissionListener onWindowPermissionListener) {
            if (requestCode == 0) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                        && !Settings.canDrawOverlays(activity)) {
                    Toast.makeText(activity.getApplicationContext(), "授权失败", Toast.LENGTH_SHORT).show();
                    if(onWindowPermissionListener!=null)
                        onWindowPermissionListener.onFailure();
                }else {
                    Toast.makeText(activity.getApplicationContext(), "授权成功", Toast.LENGTH_SHORT).show();
                    if(onWindowPermissionListener!=null)
                        onWindowPermissionListener.onSuccess();
                }
            }
        }
    
        public interface OnWindowPermissionListener{
            void onSuccess();
            void onFailure();
        }
    
    }

     

    展开全文
  • android手机系统开发中,可能会遇到将第三方应用的修改系统设置及在其他应用上层显示的权限默认打开的问题。我习惯的做法: framework层中,DatabaseHelper.java 中添加 private void loadSettings...

    在android手机系统开发中,可能会遇到将第三方应用的修改系统设置及在其他应用上层显示的权限默认打开的问题。

    我习惯的做法:
    在framework层中,DatabaseHelper.java 中添加

        private void loadSettings(SQLiteDatabase db) {
            loadSystemSettings(db);
            loadSecureSettings(db);
            // The global table only exists for the 'owner' user
            if (mUserHandle == UserHandle.USER_OWNER) {
                loadGlobalSettings(db);
            }
    
            /*SUN:jicong.wang add for appops permission app */
            loadAppOpsPermission();
            /*SUN:jicong.wang add appops permission app */
        }
    
    
        /*SUN:jicong.wang add appops permission disable app */
        private void loadAppOpsPermission(){
           AppOpsManager appOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
           PackageManager pm = mContext.getPackageManager();
    
            final String []itemString = mContext.getResources()
                .getStringArray(com.android.internal.R.array.system_alert_window_permission_disable_custom_packagename);
    
            for (int i = 0; i < itemString.length; i++) {
                try {
                     PackageInfo packageInfo = pm.getPackageInfo(itemString[i],
                         PackageManager.GET_DISABLED_COMPONENTS |
                         PackageManager.GET_UNINSTALLED_PACKAGES |
                         PackageManager.GET_SIGNATURES);
    
                        appOpsManager.setMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
                                packageInfo.applicationInfo.uid, itemString[i], AppOpsManager.MODE_ERRORED);                     
                } catch (Exception e) {
                    Log.e(TAG, "Exception when retrieving package:", e);
                }    
            }
    
            final String []itemStringExt = mContext.getResources()
                .getStringArray(com.android.internal.R.array.system_alert_window_permission_custom_packagename);
    
            for (int i = 0; i < itemStringExt.length; i++) {
                try {
                     PackageInfo packageInfo = pm.getPackageInfo(itemStringExt[i],
                         PackageManager.GET_DISABLED_COMPONENTS |
                         PackageManager.GET_UNINSTALLED_PACKAGES |
                         PackageManager.GET_SIGNATURES);
    
                        appOpsManager.setMode(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
                                packageInfo.applicationInfo.uid, itemStringExt[i], AppOpsManager.MODE_ALLOWED);                     
                } catch (Exception e) {
                    Log.e(TAG, "Exception when retrieving package:", e);
                }    
            }
    
        final String []itemStringExt1 = mContext.getResources()
            .getStringArray(com.android.internal.R.array.write_settings_permission_custom_packagename);
    
        for (int i = 0; i < itemStringExt1.length; i++) {
            try {
                 PackageInfo packageInfo = pm.getPackageInfo(itemStringExt1[i],
                     PackageManager.GET_DISABLED_COMPONENTS |
                     PackageManager.GET_UNINSTALLED_PACKAGES |
                     PackageManager.GET_SIGNATURES);
    
                    appOpsManager.setMode(AppOpsManager.OP_WRITE_SETTINGS,
                            packageInfo.applicationInfo.uid, itemStringExt1[i], AppOpsManager.MODE_ALLOWED);                     
            } catch (Exception e) {
                Log.e(TAG, "Exception when retrieving package:", e);
            }    
        }
    
    
        }
    
    展开全文
  • WindowManager权限允许在其他应用之上

    千次阅读 2018-01-03 16:04:31
    android6.0之前想要用WindowManager还蛮简单的,这是之前的方法但是改版之后因为安全的问题,  android 系统觉得开发者要放这种功能需要使用者”认真”的同意...以下程式码是说如果没有系统允许的话,就发送一个acti

    在android6.0之前想要用WindowManager还蛮简单的,这是之前的方法但是改版之后因为安全的问题, 
    android 系统觉得开发者要放这种功能需要使用者”认真”的同意,于是以后要使用弹出对话框的这种方法不只是宣告SYSTEM_ALERT_WINDOW就可以了,还要在APP执行时再问一次使用者并且解释原因。 
    教学如下: 
    以下程式码是说如果没有系统允许的话,就发送一个action,向使用者要求使用权限,不然程式会崩溃

            if (! Settings.canDrawOverlays(MainActivity.this)) {
                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:" + getPackageName()));
                startActivityForResult(intent,10);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    只要使用者允许后,授权dialog就可以在视窗上弹出 
    这里写图片描述 
    这段是接收如果使用者不同意的话所做的相对应处理

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 10) {
            if (!Settings.canDrawOverlays(this)) {
                // SYSTEM_ALERT_WINDOW permission not granted...
                Toast.makeText(MainActivity.this,"not granted",Toast.LENGTH_SHORT);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    阿这是sdk23以上的版本才需要这么做,所以季的要加上Build.VERSION.SDK_INT >= 23判断,不过不加也是可以

    展开全文
  • <p>(是处女贴哈)Win10上安装了一款应用程序,页面默认是所有应用程序的最下层显示,蛮烦人。。 求技术帝教我qwq</p>
  • 就像电脑操作系统上的软件、互联网浏览器上的门户网站、...理解区块链应用层之前,我们先来看看传统互联网的应用层是如何搭建的。可以说,应用层作为OSI七层模型的最上层,是整个互联网时代的焦点,比如谷歌、亚马逊.

    在这里插入图片描述

    就像电脑操作系统上的软件、互联网浏览器上的门户网站、电子商城或是手机端上的 APP,区块链应用层封装了各种应用场景和案例,是用户可以真正直接使用的产品。本篇将聚焦区块链应用层,探寻其与传统互联网应用的区别及特征。

    区块链应用层

    如果说区块链生态中的基础设施是土壤,区块链应用就是农作物,想要农作物年年获得丰收,单单满足土壤肥沃是不行的,植物本身的基因得优良。

    在理解区块链应用层之前,我们先来看看传统互联网的应用层是如何搭建的。可以说,应用层作为OSI七层模型的最上层,是整个互联网时代的焦点,比如谷歌、亚马逊、Facebook、阿里、腾讯、百度等等,大型互联网公司倾向于通过将用户锁进自己专有的接口,来扩大自己的平台并垄断平台中产生的信息。

    从架构设计角度来讲,这是由于互联网现有协议,如TCP/IP、SMTP、HTTPS等,都是作为基本模块而存在。这也就是说,虽然它们提供了通用的指导和结构,但这些“瘦协议”不够健壮,无法处理当今在线环境所要求的大多数操作。这就导致互联网构建起“胖应用”,以提供所有参与者都可遵循的生态系统和基础设施,并可以根据需要收集和利用数据。

    但区块链网络则相反。它倾向于提供单项服务,而且无法占有用户交互的接口,因为它们并不控制数据。然后分工就会出现,因为一个网络越是分散化,就越难通过一个接口来提供一整套的服务。所以,区块链世界里的各类应用,会相互独立的建构在多个可组合的协议之上。这种架构,我们可以称之为区块链服务架构,就像“微服务架构”一样,只不过是有权限最高的组成部分。

    也就是说,区块链反转了应用层和协议层之间的这种分布。区块链允许创建具有非常具体的功能和指导原则的“胖协议”。这个新的协议层可以处理以前为应用层保留的治理、验证、激励和参与规则等问题。并且,通过这个健壮的协议层,区块链应用程序可以变得非常“瘦”,同时受益于分散的、不依赖于集中实体的网络。

    区块链应用的特征

    除了在架构设计理念上的不同,区块链应用层通过开发去中心化应用(DApps),即通过调用协议层及智能合约层的接口,以适配区块链的各类应用场景,为用户提供各种服务和应用,来丰富整个区块链生态。但一个成功、强劲和可持续的Dapps,在用户体验、隐私、安全性等方面有着截然不同的特征,这也是其制胜传统中心化应用的关键。

    1、支持去中心化的用户身份

    去中心化身份是一种数字世界的自主身份,对应着现实世界中的「天赋人权」:我们每个人的存在和权益并不需要任何中心化机构的背书和证明。

    在集中式系统控制的互联网世界里,个人都直接依赖中央权力来发送和接收信息以及接受命令,这使得本属于用户数据却平台垄断滥用。但频繁的隐私泄露也唤醒了大众对数字隐私和个人身份的重新正视。

    因此支持DID的去中心化应用,在个人隐私、自主身份等方面有了全新的突破。此外,对于支持DID的去中心化应用来说,在尊重用户ID属于用户这个基本原则下,也就不存在抢夺用户的问题,更容易形成联盟和合作。

    2、支持用户数据的共享流通

    大型的互联网商业模式依赖于建立数据垄断,这导致了企业间更多的竞争而非合作,用户也只能访问不同平台来获得自己的信息碎片。

    而通过区块链服务架构,用户可以自主许可或撤销平台应用对自己数据的访问和使用,没有任何应用可以垄断对这些数据的控制权。当你用基于密码学的钱包访问区块链应用时,只是给了应用一把在网络中寻找信息的 “钥匙”。这把钥匙你可以给任何应用,使其在数据可迁移的基础上提供优质的服务,从理念到服务质量上战胜传统应用。

    3、建立并遵循开放协议

    去中心化应用最需要的是开放协议,使区块链价值网络成为互联互通基础,而不是一条封闭的链条。

    建立并遵循开放协议,这使得各种各样的设备、网络、服务和应用能够互相无缝连接起来,也使得商业的分工更容易完成。DApps应该支持众多应用程序可以互相分工协助,而不是像传统的App一样,每一个都是大而全的应用,而每个应用又大部分雷同,造成资源的浪费。

    总而言之,我们正处在一场深远变革的前夕。作为数字新基建的重要组成部分,区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。但这需要各行各业的先行者们鼎力协作,加速并实现区块链大规模应用的落地。

    展开全文
  • 安卓应用在其他应用上悬浮显示权限添加 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package=...
  • Android 在其他应用上悬浮显示View

    万次阅读 2018-06-15 16:26:22
    此段代码打开wifi设置界面时,会左下角和右下角多了返回和下一步按钮,点击这两个按钮都会关闭掉当前的wifi设置界面。(基于Android 4.2,4.4版本测试)Intent intent = new Intent(); intent.setAction(Settings......
  • 摘要:MMS技术电力系统通信协议中应用越来越广泛,本文将对MMS技术作简要的介绍和分析,并此基础上对MMS技术IEC60870-6 TASE2系列标准和IEC61850标准中的应用进行了分析。 关键词:MMS、互操作性、IEC60870-6...
  • Android 实现所有应用上显示View
  • 分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 简介 ZooKeeper是一个开源的分布式协调服务,由雅虎...
  • ADAS车载导航设备上的应用

    千次阅读 2015-09-05 17:01:12
    ADAS车载导航设备上的应用 首先我们来了解一下ADAS的基本概念,ADAS全称是Advanced DriverAssistance Systems,中文翻译是高级驾驶辅助系统。随着城市化的进一步发展,居民生活水平的提高,路上的车越来越多了,...
  • ,通过手势移动状态(Began、Changed、Ended)来控制按钮的位置、以及吸附哪个边缘。 我个人目前的实现方法就是先定义一个控制器,该控制其中添加悬浮按钮,然后让需要用到按钮的控制器继承该控制器。 悬浮...
  • 自从移植驱动以来一直对应用层调用底层驱动的过程很感兴趣,每次看到Android的系统架构图时总是会自然的觉得上层APP调用底层驱动的时候使一层一层往下调用,从APP到framwork再到HAL最后到驱动,然而我总觉得这样一层...
  • 目前移动端的系统运行环境叫做REE(Rich Execution Environment),其中运行的系统叫做Rich OS(Operating System),包含Android、IOS和Linux,Rich OS的特点是功能强大,开放和扩展性好,可以给上层应用提供设备...
  • SOFA 应用架构详解

    万次阅读 多人点赞 2018-06-26 07:30:00
    本文来自作者 张建飞  GitChat 上的分享编辑 | 阿笠1. 前言从业这么多年,接触过银行的应用,Apple 的应用,eBay 的应用和现在阿里的应用,虽然分属于...
  • 跨板上层软件x86模拟平台搭建

    千次阅读 2012-04-03 12:24:56
    但是上层业务软件,事实上并不强依赖于嵌入式平台,而弱耦合的底层资源代码,可以通过上下层解耦,规划API接口,并根据逻辑进行打桩。从而确保业务逻辑,高层软件可以x86机器上与底层软件同时并行编码和调试。 ...
  • 互联网应用架构

    千次阅读 2018-07-26 14:31:30
    Web服务器的设计目的是提供HTTP内容,应用服务器也可以提供HTTP内容,但不限于HTTP,它还可以提供其他协议支持,如RMI / RPC。 1.1 Web服务器 Web服务器的基本功能是提供Web信息浏览服务,它只需支持HTTP协议、...
  • ZigBee和6LoWPAN物联网中应用对比

    千次阅读 2015-12-01 14:08:27
    ZigBee被应用在家庭自动化(home automation),智能能源(Smart Energy),商业楼宇自动化(commercial building automation)以及其它低速率无线网络中。ZigBee是架构802.15.4标准上的技术。ZigBee被设计
  • 协议本身未提供加密功能,但由于 MQTT 是 TCP 上层运行的,我们可以很容易地利用 TLS 来提供加密连接。但这确实增加了发送与接收信息的计算复杂性,不但约束系统中会造成问题,还会影响消息代理的性能。稍后我们...
  • 这篇文章目的在于介绍Android系统上控制权限的方法,读者只要使用过Android... 相比Apple,Microsoft严格控制生态系统(从苹果给开发者的"App Store Guideline"可见一斑),只允许通过官方应用商店安装应用,并对每份上
  • 中间件技术及其应用

    千次阅读 2006-06-27 23:57:00
    中间件技术及其应用一、概述1、中间件的概念 随着计算机技术的飞速发展,各种各样的... 这些,都需要一种构筑于软、硬件平台之上,同时对更上层应用软件提供支持的软件系统,而中间件正是这个环境下应孕而生。 
  • Linux下的帧缓冲--framebuffer应用编程

    千次阅读 2013-05-12 21:57:31
    帧缓冲(framebuffer)是 Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页...
  • 本文是无人驾驶技术系列的第五篇,着重于GPS以及惯性传感器无人驾驶中的应用。GPS是当前行车定位不可或缺的技术,但是由于GPS的误差、多路径以及更新频率低等问题,我们不能只依赖于GPS进行定位。而惯性传感器拥有...
  • 深度学习智能交通的应用--综述

    千次阅读 多人点赞 2019-01-31 21:47:11
    论文作者:Yuan Wang a , Dongxiang Zhang b, ⁎ , Ying Liu b , Bo Dai b , Loo Hay ...近年来,深度学习计算机视觉、速度识别和自然语言处理方面取得的成功使得人们很自然将其应用于ITS。我们将ITS中的应用程序...
  • 偏光片LCD中的应用

    千次阅读 2016-01-09 12:58:40
    通常的偏光片只允许X方向或Y方向的光通过。只有与偏光片的方向相同的光才可通过。 如下为AUO官网show出的LCD的构造。 但是为何会有两层偏光片呢?(是为了能显示黑色!)  以TN(Twisted Nematic)型LCD为例...
  • 总第388篇2020年 第11篇美团外卖数据仓库通过MOLAP+ROLAP双引擎模式来适配不同应用场景。MOLAP引擎使用了Apache Kylin。ROLAP我们经过综合考虑,选择了...
  • 作者简介:李扬,滴滴出行资深软件开发工程师。2015年加入滴滴出行基础平台部,主要负责HBase... 本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2017年《程序员》 背景对接业务类型HBase是建立...
  • 上一篇博文讲解了Zookeeper的典型应用场景,大数据时代,各种分布式系统层出不穷,其中,有很多系统都直接或间接使用了Zookeeper,用来解决诸如配置管理、分布式通知/协调、集群管理和Master选举等一系列分布式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,426
精华内容 36,970
关键字:

允许在其他应用上层