Androidの呼び出しContentProviderでの方法

1595 ワード

APP AはProvider方式で他のアプリケーション、例えばAPP Bにデータを提供し、APP BがAPP Aのメソッドを呼び出す必要がある場合、Providerはcallメソッドを書き換える必要があり、APP Bはcallメソッドを呼び出すことでAPP AのProviderのcallメソッドを実行し、Bでcallメソッドを呼び出す戻り値がProviderのcallメソッドの戻り値である.
APP AのProviderはcallメソッドを書き換える必要があります.
public class ContentProviderDemo extends ContentProvider {

    @Override
    public Bundle call(String method, String arg, Bundle extras) {
        System.out.println("method:" + method);
        Bundle bundle = new Bundle();
        // put  boolean ,          true、    fasle
        bundle.putBoolean(method, true);
        return bundle;
    }
	
	...

}

 
APP Bはcallメソッドを呼び出します.
String method = "isSuccess";
String uri = "content://jobdispatcher/abc.txt";
Bundle bundle = context.getContentResolver().call(
        Uri.parse(uri), method, null, null);
//        boolean          
System.out.println("    :" + bundle.getBoolean(method));

呼び出し元のcallメソッドはProviderのcallメソッドよりもUriパラメータが1つ多いことがわかりますが、呼び出し元がcallメソッドを呼び出すと、どのProviderのcallメソッドを呼び出すかどうやって知るのでしょうか.
呼び出し元がcallメソッドを実行する場合,Uriマッチングに基づいてどのProviderのcallメソッドを実行するかである.マッチングルール:Uriのauthority.
Providerの登録は次のとおりです.


呼び出しは次のように使用できます.
context.getContentResolver().call(Uri.parse("content://jobdispatcher"), "hehe", null, null);

その中でuriが「content://jobdispatcher「最初からauthorityが「jobdispatcher」であると一致するこのProvider.