分类 安卓开发 下的文章

安卓开发时的突发奇想

去年年底,借着一些关系联系到了小米电视的PM,直接反馈了一些问题之后,小米给我手头这个18年底就断更的机器更新了最终版本的更新,把大部分Bug和缺憾都做了补全,我很是满意。
但是发现从老版本更新到新版本之后,系统原生的设置不见了。还好老版本当中没有odex化系统App,所以可以直接拿出来安装后补全。不知道其他用户有没有需求,所以在此随便记录一下。
测试版本: 4A 32" matrix Android6.0.1 MIUITV1.3.89

过程

1.安装Settings.apk和Starter.apk
2.于我的应用界面会出现以下图标的APP
MITVSettings_Starter
3.点选即可打开设置主页面
MITVSettings_AOSP1
MITVSettings_AOSP2
也可以通过快速点按版本号来打开完整版的开发者选项
MITVSettings_AOSP3

下载

Settings.apk
Starter.apk

介绍
这是我自己开发的一个电视桌面
有基本的APP打开功能,时间显示功能,隐藏应用功能
运存占用很低,实测RT2984+1GB运行内存也可以流畅运行

开源相关
原来准备开源的,但是因为硬盘事故(乱折腾黑果格了盘),所以没源码了,抱歉

包信息
包名:com.linus.atvhome
Android SDK版本需求:≥4.0.3(IceCreamSandwich)
包大小:>1.5MB

截图
截自我的小米电视4A 32"/Android 6.0.1
ATVHome1
ATVHome2
ATVHome3

下载
正常版本下载
360加固版本下载

更新日志

版本号更新时间更新日志
1.0.12021/05/24360加固测试
更换新签名
1.0.12018/08/28修复应用详情调用崩溃问题
1.0.02018/08/20首次发布

N在ConnectivityManager方面的API变动很大。其中在移动流量部分多了个流量节省程序(不是Chrome里面那个经Google服务器中转的那个,那个国内没法用)
可以在设置下,流量使用情况里面可以开启或关闭这个功能。开启后(默认是允许后台数据),会有一个AppList,让你选择不限制数据使用的APP。如果想要关闭后台数据,可以在流量使用情况里开关后台数据。
那今天就来谈谈InWall环境下,开启DataSaver后后台流量以及推送的处理
开始有些特别处理,比如在流量节省程序开之后,关了后台数据,后台就无法连接网络,这时我们就需要启动界面时请求开启,intent需要设置一个data也就是所在程序的包名

   intent=new Intent(Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS);
        Uri uri = Uri.parse("package:com.demo.napi.DataSaver"); intent.setData(uri); startActivity(intent);

写接收器来监听流量节省开关事件。以下是我的测试结果。

        class MyReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("MainActivity","onReceive "+ intent.getAction());
            ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
            boolean isNetworkMetered =  manager.isActiveNetworkMetered();
            Log.d("MainActivity","isNetworkMetered = "+ isNetworkMetered);
            if(isNetworkMetered){
                Log.d("MainActivity","getRestrictBackgroundStatus = "+ manager.getRestrictBackgroundStatus());
                switch (manager.getRestrictBackgroundStatus()){
                    case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED:
                        //关闭了流量节省,流量不限制。
                        break;
                    case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED:
                        //开启了流量节省或者流量节省开启的状态下允许后台数据由关到开。这时服务里后台运行的流量不可以使用,假如程序不是活动,甚至数据也不可以使用。
                        break;
                    case ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED:
                        //流量节省开启的状态下,不限制后台数据开启了,这时流量可以使用,即使程序切到后台,活动变为虚,数据也可以使用。
                        break;
                }
            }
        }
    }

再注册一下接收器

    registerReceiver(DataSaverReceiver(),
             newIntentFilter(ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED));

自己尝试了下,觉得不难理解,觉得如果利用好,这个api在国内一样能有大用处,不过。。。某些国内主流软件还在使用4.0的API(不不不,我不是针对各大Bank),普及起来,难度很大啊!

本文恢复自本站2016年11月7日时的备份,仅供阅读本人黑历史之用,其中的资料或链接可能已过时或失效,敬请见谅

版本辨别:
1.AOSP/EMUI等采用的com.google.webview
最新版本:54
可以经由Play直接升级
2.CM/MK/Silm等所采用的com.android.webview
最新版本:51
以下讲讲如何升级再编译版的Webview
这个Webview许多OS自带的版本仅仅只有42,html5低的很,但是由于是重编译版,so。。。更新速度感人!
CM的WebviewGituhub站:GitHub/CMWebview
下载时记得选对指令集:)
如果你硬要让使用重编译的webview框架使用Google版,请使用:强行Google Webview
但是请注意!千万不要使用幸运破解器的整合系统更新!重启后会导致几乎所有调用Webview的APP全局go die!千万不要大死!