三星超级省电模式之手动添加任意程序

比较喜欢三星的超级省电模式,但是超级省电模式下只能添加有限的应用程序,并不能满足我的需求.

因为,有时候就想在超级省电模式下看个小说.

本来以为无法修改的,但是网上查了一下,有人写了一个超级省电模式管理器,可以实现任意添加程序的功能.所以应该能迂回实现这个功能.



以下是我个人的一些研究成果:

联想到android共享数据的组件ContentProvider,猜想添加程序列表应该是存储在数据库中,那么只要修改数据库就行.


首先,在手机上装一个PackageBrowser,定位到相应的Provider:  com.sec.android.provider.emergencymode

然后,进入到数据库目录: 

> adb shell

>cd  /data/data/com.sec.android.provider.emergencymode/databases

可以看到有一个emergency.db 数据库,

>sqlite3 emergency.db    (进入数据库)

sqlite>.tables  显示有以下tables:

alarm             disabledpkg       launcheradd       prefsettings
android_metadata  ecclist           launcherdefault   whitelist

注意到launcheradd 和 launcherdefault 这两个表,(整个超级省电模式apk叫 emergencylauncher)

sqlite>.schema launcherdefault
CREATE TABLE launcherdefault(package TEXT, class TEXT, position INTEGER, fixed I
NTEGER, mode INTEGER);

sqlite> select * from launcherdefault;
com.android.contacts|com.android.dialer.DialtactsActivity|0|0|1
com.android.mms|com.android.mms.ui.ConversationComposer|1|0|1
com.android.mms|com.android.mms.ui.ConversationComposer|0|0|0
com.android.contacts|com.android.contacts.activities.PeopleActivity|1|0|0
com.sec.android.app.clockpackage|com.sec.android.app.clockpackage.ClockPackage|2
|0|1

可以看到,进入超级省电模式后显示的程序都包含在这个表中, 其中fixed 列表示该程序是否可以被移除.

再看launcheradd这个表:

sqlite> .schema launcheradd
CREATE TABLE launcheradd(package TEXT, class TEXT, permission TEXT, mode INTEGER
);

sqlite> select * from launcheradd;
com.sec.android.app.sbrowser|com.sec.android.app.sbrowser.SBrowserMainActivity|1
001|1
com.sina.weibo|com.sina.weibo.SplashActivity|0000|1
com.tencent.qphone|com.tencent.sc.activity.SplashActivity|0000|1
com.tencent.mm|com.tencent.mm.ui.LauncherUI|0000|1
com.tencent.mobileqq|com.tencent.mobileqq.activity.SplashActivity|0000|1
com.sec.android.app.popupcalculator|com.sec.android.app.popupcalculator.Calculator|0000|1
com.sec.android.app.clockpackage|com.sec.android.app.clockpackage.ClockPackage|0101|1
com.samsung.android.app.memo|com.samsung.android.app.memo.Main|0001|1
com.sec.android.app.voicenote|com.sec.android.app.voicenote.main.VNMainActivity|0101|1
com.sec.android.app.sbrowser|com.sec.android.app.sbrowser.SBrowserMainActivity|1001|0
com.sec.chaton|com.sec.chaton.HomeActivity||0
com.tencent.mobileqq|com.tencent.mobileqq.activity.SplashActivity|0000|0
com.tencent.qphone|com.tencent.sc.activity.SplashActivity|0000|0
com.tencent.mm|com.tencent.mm.ui.LauncherUI|0000|0
com.sina.weibo|com.sina.weibo.SplashActivity|0000|0

点击超级省电模式添加按钮,可以看到,如果手机中有以上数据库中包含的程序,都会出现在列表里.


至此,我们就很清楚的知道,要想添加自己希望的程序,只要把程序信息添加到launcheradd这个数据表中就行,

下面,试着添加UC浏览器,这个浏览器的小说书架还是很给力的.

sqlite>insert into launcheradd values("com.UCMobile","com.UCMobile.main.UCMobile","0000",1);

执行添加命令后,查看下launcheradd表,发现信息已经添加进去了:

com.UCMobile|com.UCMobile.main.UCMobile|0000|1


重新启动下超级省电模式,点击添加按钮,发现UC浏览器已经出现在列表里面了.


最后,再做一点修改,因为默认的电话,短信,浏览器这三个图标是不可改变的,修改属性让他们可以被移除.

sqlite> update launcherdefault set fixed=0 where fixed=1;

现在,之前固定的三个图标已经可以移除了.来张截图:

三星超级省电模式之手动添加任意程序_第1张图片

(图是用eclipse截取的,所以带有颜色,实际上整个屏幕是灰色的)


最后,需要注意的是,电话和短信一定不要从主界面去除,

经过测试,其它不在列表里的程序可以随意添加,并不存在网上说的兼容性问题.







你可能感兴趣的:(Android)