多个APK通过Service共享数据

1、首先你应该会

AIDL和远程Service调用

http://blog.csdn.net/tabactivity/article/details/35832515

2、接着在AndroidManifest.xml里注册服务

         <service android:name="com.content.pm.AccountService"
               android:label="AccountService"
               android:enabled="true"
               /> 

1、如果想要服务可以被其他程序(APP)访问,必须加上
android:enabled="true"
,但此时会提示你这个应该加上权限限制保证他的安全,以至于不被所有程序都能随意访问。


2.声明权限

先在<manifest>标签下加入

<permission android:protectionLevel="normal" android:name="oem.permission.SENDMAIL"></permission>

然后在<service>标签下

android:permission="oem.permission.SENDMAIL"



Android权限级别(protectionLevel)

  通常情况下,对于需要付费的操作以及可能涉及到用户隐私的操作,我们都会格外敏感。

    出于上述考虑以及更多的安全考虑,Android中对一些访问进行了限制,如网络访问(需付费)以及获取联系人(涉及隐私)等。应用程序如果想要进行此类访问,则需要申请相应权限。Android对这些权限进行了四类分级,不同级别的权限对应不同的认证方式。

   
normal
:低风险权限,只要申请了就可以使用(在AndroidManifest.xml中添加<uses-permission>标签),安装时不需要用户确认;
    dangerous:高风险权限,安装时需要用户的确认才可使用;
    signature:只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时(如果是申请系统权限,则需要与系统签名相同),才能将权限授给它;
    signatureOrSystem:签名相同,或者申请权限的应用为系统应用(在system image中)。

    上述四类权限级别同样可用于自定义权限中。如果开发者需要对自己的应用程序(或部分应用)进行访问控制,则可以通过在AndroidManifest.xml中添加<permission>标签,将其属性中的protectionLevel设置为上述四类级别中的某一种来实现。


我这里修改后就是:

        <service android:name="com.content.pm.AccountService"
               android:label="AccountServicee"
               android:enabled="true"
               android:exported="true"
               android:permission="cn.com.talker.permission.ACCESS_ACCOUNT"
               >                                             
        </service>


3、在另外一个APK里,绑定服务,并添加权限,访问AIDL的方法

Intent mIntent=new Intent();
 mIntent.setComponent(new ComponentName("cn.com.talker.beta", "com.content.pm.AccountService"));
bindService(mIntent, conn, Context.BIND_AUTO_CREATE);
new Thread(new Runnable() {
            
            @Override
            public void run() {
        
            
                String assString;
                try {
                    Thread.sleep(5000);
                    assString=mAccountService.getAreaCode("aaa"));
                    if(assString!=null){
                        Log.e("aaaaa", assString);
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
            }
        }).start();
    




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江西省遂川县常驻深圳大使

喜欢本文,打赏下作者吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值