精华内容
下载资源
问答
  • 禁止某个app联网

    2021-04-23 14:58:17
    busybox awk '{print $2}'` // iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP // 以上是android iptables 屏蔽某个app网络访问的内容, function 联网控制(appName) { // -A OUTPUT -m owner --...
    //作者: 家  QQ203118908
    
    
    //本来打算用iptables-restore用文件形式更新防火墙规则,
    //可是iptables-restore出现了bug,2013年就有人提过这个bug
    //https://linux.debian.bugs.dist.narkive.com/J0hbJiR6/bug-710379-xtables-addons-common-quota2-module-iptables-save-creates-invalid-record
    //又得改,坑爹
    
    //马丹,iptables -D INPUT -lineNumber也有BUG,
    //提示 index of deletion too big
    //日了够了
    //又得改,坑爹
    // sudo iptables -D OUTPUT 1 -t nat
    //
    // uid=`cat /data/system/packages.list | grep com.sohu.inputmethod.sogou | busybox awk '{print $2}'`
    // iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP
    
    // 以上是android iptables 屏蔽某个app网络访问的内容,
    
    function 联网控制(appName) {
      // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
      // -A OUTPUT -m owner --uid-owner 10105 -j DROP
      this.等待shell执行完毕的时间 = 0
      this.防火墙规则路径 = '/sdcard/iptables.txt'
      this.uid路径 = '/sdcard/' + appName + 'uidOwner.txt'
      this.appName = appName
      this.packageName = getPackageName(this.appName)
      this.执行shell = (cmd) => {
        var result = shell(cmd, true);
        console.show();
        log(result);
        if (result.code == 0) {
          toastLog("执行成功");
        } else {
          toastLog("执行失败!请到控制台查看错误信息");
        }
        sleep(this.等待shell执行完毕的时间)
      }
      this.uid = () => {
        var cmd = 'cat /data/system/packages.list | grep ' + this.packageName + ' > ' + this.uid路径
        log('cmd=', cmd)
        this.执行shell(cmd)
        // cat /data/system/packages.list | grep com.tencent.mobileqq > /sdcard/QQuidOwner.txt
        var 包含uid的文本 = files.read('/sdcard/' + appName + 'uidOwner.txt')
        log('包含uid的文本=', 包含uid的文本)
        var uidReg = new RegExp(this.packageName + '\\s*(\\d+)')
        log('uidReg=', uidReg)
        var uid = 包含uid的文本.match(uidReg)[1]
        log(uid)
        return uid
      }
      this.允许联网规则 = 'iptables -t filter -A OUTPUT -m owner --uid-owner ' + this.uid() + ' -j ACCEPT'
      this.禁止联网规则 = 'iptables -t filter -A OUTPUT -m owner --uid-owner ' + this.uid() + ' -j DROP'
      this.允许 = () => {
        this.清空该app的防火墙规则()
        this.将防火墙规则写入系统(this.允许联网规则)
      }
      this.禁止 = () => {
        this.清空该app的防火墙规则()
        this.将防火墙规则写入系统(this.禁止联网规则)
      }
    
      this.将防火墙规则写入系统 = (防火墙规则) => {
        var cmd = 防火墙规则
        this.执行shell(cmd)
      }
      this.导出防火墙规则 = () => {
        var cmd = 'iptables-save > ' + this.防火墙规则路径
        this.执行shell(cmd)
      }
      this.防火墙规则 = () => {
        this.导出防火墙规则()
        var 防火墙规则 = files.read(this.防火墙规则路径)
        log('防火墙规则=', 防火墙规则)
        return 防火墙规则
      }
      this.清空该app的防火墙规则 = () => {
        var 防火墙规则 = this.防火墙规则()
        // stringObject.replace(regexp/substr,replacement)
        // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
        // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
        // -A OUTPUT -m owner --uid-owner 10105 -j DROP
        // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
        // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
        // 删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):
        // [root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
        // iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP
        var 要删除的规则reg = new RegExp('-A (OUT|IN)PUT -m owner --uid-owner ' + this.uid() + ' -j (ACCEPT|DROP)', 'g')
        // 要删除的规则reg= /-A OUTPUT -m owner --uid-owner 10105 -j (ACCEPT|DROP)/
        // -A OUTPUT -m owner --uid-owner 10105 -j (ACCEPT|DROP)
        // iptables -D OUTPUT -m owner --uid-owner 10105 -j ACCEPT
        log('要删除的规则reg=', 要删除的规则reg)
        var new防火墙规则 = 防火墙规则.match(要删除的规则reg, '')
        log('new防火墙规则=', new防火墙规则)
        // new防火墙规则= [
        //   '-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT',
        //   '-A OUTPUT -m owner --uid-owner 10105 -j DROP'
        //               ]
        if(new防火墙规则){
          for (let i = 0; i < new防火墙规则.length; i++) {
            var 规则 = new防火墙规则[i]
            规则 = 规则.replace('-A', '-D')
            var cmd = 'iptables ' + 规则
            this.执行shell(cmd)
          }
        }
        log('清空了指定app的防火墙规则')
      }
    }
    
    // var appName = 'QQ'
    // var appName = '哔哩哔哩'
    var appName = '微信'
    var app联网控制 = new 联网控制(appName)
    // app联网控制.禁止()
    app联网控制.允许()
    
    

    声明

    部分内容来自网络

    bilibili

    牙叔教程

    微信公众号 牙叔教程

    在这里插入图片描述

    QQ群

    747748653

    在这里插入图片描述

    展开全文
  • MIUI可以说是相对Android原生改进较大的一款ROM,特别是在V5之后,做了很多实用的功能。但有些改进在方便用户的同时也...如果你在使用最新的MIUI系统时也遇到新安装的应用无法联网的情况,下面的方法就能帮到你。首...

    MIUI可以说是相对Android原生改进较大的一款ROM,特别是在V5之后,做了很多实用的功能。但有些改进在方便用户的同时也给用户带来了一些困扰。

    最近收到不少朋友反馈在最新的MIUI系统下安装《驱家新闻》客户端后,出现在2G/3G环境下无法联网的问题,于是抓紧排查,最后发现,问题出现在MIUI系统设置方面。

    如果你在使用最新的MIUI系统时也遇到新安装的应用无法联网的情况,下面的方法就能帮到你。

    首先,打开手机的的“系统与安全”文件夹,在其中找到“安全中心”并打开。

    d759799eba9c1c02eaacb45f43e9378a.gif

    打开“网络助手”,早前独立的“网络助手”功能被整合进了安全中心里面。

    73a374b8c1ae543f79f2c321c765e51c.gif

    进入后点击右上方的“流量排行”。

    195b4176810acbec332334a8a36dda79.gif

    在最下方找到“批量联网控制”,点击打开。

    1b516dee45b92bff18d465fa4268febe.gif

    首先找到未能联网的应用,点击红叉使其变成对勾即可。

    dd9489443f4cead573b8cc6531b4fbda.gif

    这只是第一步,为了让之后新安装的应用不会再出现无法联网的情况。还需要一步设置,在控制应用联网界面最下方找到“新安装应用默认设置”。

    然后将2G/3G和WLAN都勾选上,这样新安装的应用就不会出现无法联网的问题了。

    2a777c8fa944077980ed2873bafe3aac.gif

    大部分情况下新安装应用的默认设置均为2G/3G和WLAN允许联网,所以用户一般不会太在意。但少数情况下,在线升级MIUI后会出现新安装应用联网权限被关闭的情况,造成用户不便。

    《驱家新闻》下载地址:Android版;iOS版。

    展开全文
  • 因为Android8.1base/core/java/android/os/INetworkManagementService.aidl中的 void setFirewallUidChainRule(int uid, int networkType, boolean allow);被删除了,实在是一筹莫展。 现在想问一下8.1除此之外还有...
  • 关于广告屏蔽,阿虚已经...其实很简单,方法就六个字:禁止软件联网 毕竟广告都是联网时,才会弹出 ● 1.1 举个栗子:超级课程表 最起初的超级课程表其实挺好:功能简单,实在,单纯的课程表,因为是最早一批做课程表的

    关于广告屏蔽,阿虚已经写过不少教程了:

    你可以通过装Google Play版程序、装广告屏蔽插件、可以通过安装旧版APP…等等方法来屏蔽广告

    但今天我想再说一个可能被很多人忽视的屏蔽广告的办法

    ▍1 提一下思路

    针对某些软件,比如词典、课程表、清单类软件、计算器…

    其实我们还有另外一种办法屏蔽广告

    阿虚说一提你可能就明白了

    其实很简单,方法就六个字:禁止软件联网

    毕竟广告都是联网时,才会弹出

    ● 1.1 举个栗子:超级课程表

    最起初的超级课程表其实挺好:功能简单,实在,单纯的课程表,因为是最早一批做课程表的APP,对于高校教务系统的导入也支持的最全

    可是后来,多出很多杂七杂八的功能:比如「下课聊」、「小纸条」??

    我只是很简单的想用一用最中间的那个「课程表」功能啊!!!

    由于下课聊、小纸条…这种社交功能的存在,里面自然少不了打广告的

    我便不敢开启通知栏提醒功能(课程提醒),否则就会收到的杂七杂八的广告弹窗了!

    ● 1.2 iOS

    由于阿虚用的 iPhone,这里简单说一下 iOS上怎么禁止软件联网

    先打开超级课程表APP » 登录APP » 导入教务系统课表

    然后你就可以把这个APP禁止联网了:打开 iOS 设置 » 找到超级课程表

    在超级课程表的软件设置里面,把无线数据「关闭」

    这样操作之后

    我依然能收到超级课程表的通知栏通知

    但是收不到它APP内每天更新的杂七杂八的广告

    因为打开APP不加载联网显示的内容,APP打开也不卡了

    ▍2 思路延伸

    禁止软件联网这个思路,适合于许多本地软件(无需联网就能使用)

    1. 不仅可以屏蔽广告,也能屏蔽升级。

    2. 不止在手机上,电脑上一样可以。

    除了手机上的:词典、计算器、清单类软件…

    某些电脑上的软件也可以用这个办法来屏蔽广告:压缩软件、截图软件、本地视频播放器、CDR(不禁止联网的话,会被在线防盗版检测)

    ● 2.1 安卓端禁止软件联网

    虽然安卓其实没必要用这个办法,毕竟安卓找安卓找去广告版APP其实很容易

    但大家还是可以学一学

    以小米手机演示说明一下,打开系统设置 » 更多应用 » 找到你想禁止联网的APP » 联网控制 » 关闭WLAN和数据

    ● 2.2 Windows端禁止软件联网

    方法1

    简单点的办法是用电脑管家一类的软件禁止软件联网

    这类软件很多,比如:腾讯电脑管家、360电脑管家、火绒等

    方法2

    办法2优于上面的方法1:通过系统自带的防火墙控制程序的联网功能。

    先再电脑左下角,打开控制面板

    再找到防火墙设置

    打开高级设置

    找到软件主程序

    比如:我要禁止按键精灵这款软件联网

    我们先来到它F盘下的安装目录,找到它的主程序:按键精灵2014.exe

    添加入站规则

    跟着下面的图一步一步操作就行了。

    选择程序

    添加程序exe的路径

    改为阻止连接

    何时运用这里全部勾选上

    名称什么的随便写就行

    最好的话,可以把出站规则也一并添加了

    而添加出站规则和添加入站规格是同样的步骤,阿虚就不重复演示了

    你会发现某些软件,联网对于它们来说根本就略显多余

    Merriam-Webster禁止联网后就是十分好用的词典

    nPlayer禁止联网后也成了极好用的本地播放器

    知道思路后,具体还是需要自己灵活使用

    展开全文
  • Android判断app当前是否联网

    千次阅读 2015-09-01 15:33:43
    intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS); } else { intent = new Intent(); ComponentName component = new ComponentName( "com.android.settings", ...

    ConnectivityManager manager;

    /**
    * 检测网络是否连接
    * @return
    */
    private boolean checkNetworkState() {
    boolean flag = false;
    //得到网络连接信息
    manager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    //去进行判断网络是否连接
    if (manager.getActiveNetworkInfo() != null) {
    flag = manager.getActiveNetworkInfo().isAvailable();
    }
    if (!flag) {
    setNetwork();
    } else {
    isNetworkAvailable();
    }

        return flag;  
    }  
    
    
    /** 
     * 网络未连接时,调用设置方法 
     */  
    private void setNetwork(){  
        Toast.makeText(this, "wifi is closed!", Toast.LENGTH_SHORT).show();  
    
        AlertDialog.Builder builder = new AlertDialog.Builder(this);  
        builder.setIcon(R.drawable.ic_launcher);  
        builder.setTitle("网络提示信息");  
        builder.setMessage("网络不可用,如果继续,请先设置网络!");  
        builder.setPositiveButton("设置", new OnClickListener() {  
            @Override  
            public void onClick(DialogInterface dialog, int which) {  
                Intent intent = null;  
                /** 
                 * 判断手机系统的版本!如果API大于10 就是3.0+ 
                 * 因为3.0以上的版本的设置和3.0以下的设置不一样,调用的方法不同 
                 */  
                if (android.os.Build.VERSION.SDK_INT > 10) {  
                    intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);  
                } else {  
                    intent = new Intent();  
                    ComponentName component = new ComponentName(  
                            "com.android.settings",  
                            "com.android.settings.WirelessSettings");  
                    intent.setComponent(component);  
                    intent.setAction("android.intent.action.VIEW");  
                }  
                startActivity(intent);  
            }  
        });  
    
        builder.setNegativeButton("取消", new OnClickListener() {  
            @Override  
            public void onClick(DialogInterface dialog, int which) {  
    
            }  
        });  
        builder.create();  
        builder.show();  
    }  
    
    /** 
     * 网络已经连接,然后去判断是wifi连接还是GPRS连接 
     * 设置一些自己的逻辑调用 
     */  
    private void isNetworkAvailable(){  
    
        State gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();  
        State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();  
        if(gprs == State.CONNECTED || gprs == State.CONNECTING){  
            Toast.makeText(this, "wifi is open! gprs", Toast.LENGTH_SHORT).show();  
        }  
        //判断为wifi状态下才加载广告,如果是GPRS手机网络则不加载!  
        if(wifi == State.CONNECTED || wifi == State.CONNECTING){  
            Toast.makeText(this, "wifi is open! wifi", Toast.LENGTH_SHORT).show();  
            loadAdmob();  
        }  
    
    }  
    
    /** 
     * 在wifi状态下 加载admob广告 
     */  
    private void loadAdmob(){  
        ll = (LinearLayout) findViewById(R.id.load_ads);  
        ll.removeAllViews();  
        adsView = new AdView(this, AdSize.BANNER, "a15194a1ac9505d");  
        ll.addView(adsView);  
    
        adsView.loadAd(new AdRequest());  
    }
    
    展开全文
  • Android 6.0 Doze模式请求禁止联网

    千次阅读 2017-03-05 11:08:34
    Android 6.0(API level 23)开始,当手机没有连接到电源,设备进入Doze模式时,系统将通过延迟最近用户没有使用的应用程序的后台CPU运作及网络活动,让应用程序处于App Standby状态,以此来减少电池消耗。...
  • 前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论...
  • Android联网踩坑

    2020-05-01 00:26:32
    Android联网踩坑 模拟机 测试模拟机是否能联网,直接通过手机浏览器检测。 联网权限 是否在AndroidManifest.xml添加了<uses-permission android:name="android.permission....应用官方的说明:在 Android 6.0 ...
  • 前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论...
  • 自己应用怎么可以限制其他应用联网?(自己apk已拿到root权限)
  • 还有支付宝,毕竟他们已经是我们生活离不开的应用了,只能期望他们大厂会保护我们的隐私,可恶的是一些小厂的App也厚无颜耻的要求阅读手机联系人权限,这就很让人无语了! 所以今天给大家讲讲该怎么禁止...
  • #通过包名查找应用的uid ➜ apk adb shell cat /data/system/packages.xml | grep com.xzh.hbls <package name=...
  • 为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收
  • 为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接.....
  • 前言:为保证用户数据和设备的安全,Google 针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备...
  • 前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论...
  • 原理类似电脑ping命令 public static boolean isNetworkOnline() { Runtime runtime = Runtime.getRuntime(); Process ipProcess = null; try { ipProcess = runtime.exec("ping -c 5 -w 4 223.5.5.5");...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,107
精华内容 442
关键字:

安卓禁止应用联网app