资讯专栏INFORMATION COLUMN

Android系统开发剑走偏锋之修改系统属性(广播大法好)

gitmilk / 3453人阅读

摘要:本文原作者长鸣鸟,未经同意,转载不带名的严重鄙视。作为系统开发者,我们往往有这样那样修改系统属性的需求,例如修改国家码,如之类。所以我们就需要一种剑走偏锋,曲线救国之法有修改属性需求的应用发送广播,有权限的应用接收广播,修改属性。

本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。
作为系统开发者,我们往往有这样那样修改系统属性的需求,例如修改国家码,如persist.sys.countrycode之类。但我们不能把每一个应用都给予系统权限,这样指不定哪天会出大事,而且客户也不同意。
所以我们就需要一种剑走偏锋,曲线救国之法:
有修改属性需求的应用发送广播,有权限的应用接收广播,修改属性。
发送方:

private static final String BACKGROUNDDATA_ON = "#backgtotrue#";
private static final String BACKGROUNDDATA_OFF = "#backtofalse#";
Intent intent = new Intent("android.mine.SECRET_CODE");
if(enableExp){
    intent.putExtra("secretcode", BACKGROUNDDATA_ON);
} else{
    intent.putExtra("secretcode", BACKGROUNDDATA_OFF);
}
this.sendBroadcast(intent);
    

接收方:

private static final String BACKGROUNDDATA_ON = "#backgtotrue#";
private static final String BACKGROUNDDATA_OFF = "#backtofalse#";
String action = intent.getAction();
String secretcode = intent.getStringExtra("secretcode");
if ("android.mine.SECRET_CODE".equals(action)) {
    if (BACKGROUNDDATA_ON.equals(secretcode)) {
        Log.d(TAG, "persist.backgrounddata.enable:true");
        SystemProperties.set("persist.backgrounddata.enable", "true");

    } else if (BACKGROUNDDATA_OFF.equals(secretcode)) {
        Log.d(TAG, "persist.backgrounddata.enable:false");
        SystemProperties.set("persist.backgrounddata.enable", "false");
    } 
}  

但这样可能不够严谨,毕竟谁都可以发送广播,谁也可以接收广播。我们想要的是1对1,就要在在代码里声明一对一。
本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。
方案1:指定接收者
发送方:
AdroidManifest.xml:

+ 

然后发送广播的时候附带权限:

sendBroadcast("android.mine.SECRET_CODE", "com.android.permission.RECV_ONLY");

接收方:
AndroidManifest.xml:

+ 

方案2:指定发送者
接收方:
AdroidManifest.xml:

+

然后修改接收器:

   
      
            
      
    

发送方:
AdroidManifest.xml:

 

本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。
Enjoy it!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65015.html

相关文章

  • Android四大组件BroadcastReceiver

    摘要:作为的四大组件之二,其应用场景非常多。作用可以监听或接收应用或系统发出的广播消息,并做出响应。可以指定独立的进程四大组件都可以通过此属性指定自己的独立进程。对于应用内广播的动态注册方式,回调中的返回值是。 前言 Hi,大家好,又双见面啦,上一期我们讲了如何使用Activity,肯定有不少小伙伴已经创建了属于自己的FirstActivity,那么这一期我们主要为大家介绍第二个重要组件Br...

    plus2047 评论0 收藏0
  • 中型企业的运维平台

    摘要:大部分小企业的运维就是加一些脚本就可以搞定了。极端大型的企业,比如,比如腾讯,百度等,都有一套非常完善和复杂的运维平台。做一个这样的运维平台是不容易的。 这是一个未经验证的假设,just a dump of my current thought。 大部分小企业的运维就是 ssh 加一些 fabric 脚本就可以搞定了。极端大型的企业,比如 google twitter,比如腾讯 SN...

    jaysun 评论0 收藏0
  • Android四大组件BroadcastReceiver全解析

    摘要:但是,一定会被执行,从而保证了广播在死亡前一定会被注销,从而防止内存泄露。对于应用内广播的动态注册非方式,回调中的返回值是 前言 BroadcastReceiver(广播接收器),属于Android四大组件之一 在Android开发中,BroadcastReceiver的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver的一切相关知识 目录 showImg(...

    yearsj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<