你的位置:首页 > 软件开发 > 操作系统 > Android四大组件应用系列——使用ContentProvider实现跨进程通讯

Android四大组件应用系列——使用ContentProvider实现跨进程通讯

发布时间:2015-10-22 11:00:05
一、问题描述  如何在Android中实现不同应用之间的通讯(既跨进程进行调用)?Android提供了多种实现方式,使我们可以实现跨进程访问Activity、通过ContentProvider跨进程访问其他应用的数据、通过Broadcast可以向android系统中所有应用程序发 ...

Android四大组件应用系列——使用ContentProvider实现跨进程通讯

一、问题描述

  如何在Android中实现不同应用之间的通讯(既跨进程进行调用)?Android提供了多种实现方式,使我们可以实现跨进程访问Activity、通过ContentProvider跨进程访问其他应用的数据、通过Broadcast可以向android系统中所有应用程序发送广播、使用AIDL实现跨进程的Service。下面我们就使用ContentProvider实现跨进程访问数据,并可对数据进行增、删、改、查

二、应用实现

  使用ContentProvider实现数据共享,主要是共享应用的Sqlite数据库,再一个应用中(本例的shareinfo)提供数据源(Sqlite数据库)并创建ContentProvider组件, ContentProvider组件主要对外(其他应用)提供访问数据的接口(Uri信息),其他应用(本例的other)通过这个接口(Uri信息)实现跨进程的方法调用

  如图所示:

Android四大组件应用系列——使用ContentProvider实现跨进程通讯

   本例涉及两个应用shareinfo和other

三、shareinfo应用的核心

  作为数据的提供者首先是开发对外可访问的数据库(Sqlite)

  涉及两个组件DbOpenHelper和SQLiteHelper

  代码如下:

public class DbOpenHelper extends SQLiteOpenHelper {  public DbOpenHelper(Context context) {    super(context, "jereh.db", null, 4);  }  @Override  public void onCreate(SQLiteDatabase db) {    db.execSQL("create table person(personid integer primary key " +        " autoincrement,name varchar(20),phone varchar(12) null)");  }  @Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){    db.execSQL("drop table person");    onCreate(db);  }}public class SQLiteHelper {  private Context context;  private DbOpenHelper helper = null;  public SQLiteHelper(Context context){    helper = new DbOpenHelper(context);  }    public void save(Person person){//增    SQLiteDatabase db = helper.getWritableDatabase();    db.execSQL("insert into person(name,phone) values(?,?)",new Object[]{person.getName(),person.getPhone()});    db.close();  }  public void delete(int personid){//删    SQLiteDatabase db = helper.getWritableDatabase();    db.execSQL("delete from person where personid=?", new Integer[]{personid});    db.close();  }  public void update(Person person){//改    SQLiteDatabase db = helper.getWritableDatabase();    db.execSQL("update person set name=?,phone=? where personid=?", new Object[]{person.getName(),person.getPhone(),person.getPersonid()});    db.close();  }  public Person find(int personid){//查    SQLiteDatabase db = helper.getReadableDatabase();    //Cursor cursor = db.rawQuery("select * from person where personid=?", new String[]{personid+""});    Cursor cursor=db.rawQuery("select * from person",null);    if(cursor.moveToFirst()){      int id = cursor.getInt(cursor.getColumnIndex("personid"));      String name = cursor.getString(cursor.getColumnIndex("name"));      String phone = cursor.getString(cursor.getColumnIndex("phone"));      return new Person(personid, name, phone);    }    cursor.close();    return null;  }  }
 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Android四大组件应用系列——使用ContentProvider实现跨进程通讯

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录