最简单的进程间通信方式

2019-04-12  本文已影响0人  wan7451

MD 工作这么长时间,天天AIDL,居然忘记了最简单的进程间通信方式了!(脸红)
那就是最不常用的 ContentProvider !
以前在项目中多是用来读取联系人,获取系统资源文件信息.....


ContentProvider 如何使用不细说,网上一大堆。
今天主要说一个不是 ContentProvider 必须重写的方法 call

@Nullable
@Override
public Bundle call(@NonNull String method, @Nullable String arg, @Nullable Bundle extras) {

}

就是这个方法,可以被另一个进程调用。
通过参数拿到调用进程传过来的数据,再通过方法返回值Bundle 将数据返回。


别忘了声明 authorities

<provider
  android:name=".provider.XXXXProvider"
  android:authorities="com.xxx.xxx.xxx"
  android:enabled="true"
  android:exported="true"/>

另一个进程调用call 方法

public static String getData(String data) {
    Uri uri = Uri.parse("content://com.xxx.xxx.xxx");
    Bundle extras= new android.os.Bundle();
    bundleArgs.putString("xxx", data);
    android.os.Bundle bundleResult = VirtualCore.get().getContext().getContentResolver().call(
            uri, "method", "arg", extras);
    return bundleResult.getString("xxx");
}
上一篇下一篇

猜你喜欢

热点阅读