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");
}