多个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();
   

时间: 2024-11-05 07:26:21

多个APK通过Service共享数据的相关文章

AngularJS(三)——在多个AngularJS controller之间共享数据

在MVC中,为了方便维护,针对不同业务会使用不同的controller.有时我们需要在不同的controller中共享数据,本文旨在解决这一问题. 1. 使用$rootScope直接绑定 AngularJS中有一个$rootScope对象,它是AngularJS中最接近全局作用域的对象,是所有$scope对象的最上层,可以简单理解为BOM中的window对象或Node.js中的global对象.最简单的方式是直接将要共享的数据绑定到$rootScope对象中: <!DOCTYPE html>

aidl通过回调共享数据

AIDL传入回调方法 假设现有一个service在接收数据,接收的数据要传给另一个应用的activity使用,可以通过在activity中调用service的aidl的binder接口获取到远程service接口,然后通过该接口提供的设置数据接收回调的方法设置回调对象,从而实现远程service接收数据后,由activity提供的回调对象将数据传递给到activity中(这样做的原因是:aidl是共享内存的,数据共享速度是实时的). //设置回调对象的aidl package com.test.

无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&

应用间共享数据方法(一)---sharepreferce

SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下: 一.首先分析几个方法: 1.getSharedPreferences(name,mode) 方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上: 方法的第二个参数指定文件的操作模式,共有六种操作模式.

angularJS平行控制器间共享数据

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body ng-app="myApp"> <div ng-controller="c1"> {{name}} , {{msg}} , {{data

多个Activity之间共享数据的方式

现在要做一个项目,多个Activity之间要共享数据,所以要考虑共享数据的方式. 其实有如下5种方式: 1.基于消息的通信机制  Intent ---bundle ,extra 数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用. 2. 利用static静态数据,public static成员变量: 3.基于外部存储的传输,  File/Preference/ Sqlite ,如果要针对第三方应用需要Content Pro

78.PL和PS通过BRAM交互共享数据

本篇文章目的是使用Block Memory进行PS和PL的数据交互或者数据共享,通过zynq PS端的Master GP0端口向BRAM写数据,然后再通过PS端的Mater GP1把数据读出来,将结果打印输出到串口终端显示. 涉及到AXI BRAM Controller 和 Block Memery Generator等IP的使用. 本系列文章尽可能的让每一个实验都相对独立,过程尽可能保证完整性,保证实验的可重现性. 但是用到的模块或者IP的具体作用和用法不保证都重复详细的介绍. 本文所使用的开

iOS应用程序间共享数据(转)

我们知道iOS由于沙盒的存在,应用程序不能越过自己的区域去访问别的存储空间的内容,不过可能有许多场景我们需要在应用程序之间共享数据,比如多个应用共用用户名密码进行登录等.虽然我们不能直接通过文件系统来分享数据,不过还是有些方法可以实现,为了方便说明,这里同时创建了两个工程Example1和Example2,实现这两个app之间的信息共享,Example1负责写数据,Example2负责读数据,具体的demo代码可以到这里获取 UIPasteboard 剪贴板是应用程序之间传递数据的简单方式,建议

不同App之间共享数据

我们知道iOS由于沙盒的存在,应用程序不能越过自己的区域去访问别的存储空间的内容,不过可能有许多场景我们需要在应用程序之间共享数据,比如多个应用共用用户名密码进行登录等.虽然我们不能直接通过文件系统来共享数据,不过还是有些方法可以实现. 这里,我们新建两个工程,T1:负责写数据,T2:负责读数据. 方法一:UIPasteboard 剪贴板是应用程序之间传递数据的简单方式,建议不要使用全局的粘贴板,而是自己根据名字创建一个新的粘贴板,防止其它地方全局拷贝的影响.然后把需要共享的内容复制到粘贴板,粘