tgA*_*oid 16 android android-contentprovider
你好,我已经创建了一个使用名为CustomCP自定义内容提供商的Android应用程序,它实现了所有的方法,并同时管理应用程序内部的数据一切正常,但是当我尝试从另一个应用程序访问它,我不断收到的"无法错误找到com.example.customcp的提供者信息.
我在第一个应用程序的清单文件中声明了我的内容提供程序
<provider android:name="com.example.CustomCP" android:authorities="com.example.customcp"/>
Run Code Online (Sandbox Code Playgroud)
我尝试在第二个应用程序启动活动中调用提供程序
public class app2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Uri kUri = Uri.parse("content://com.example.customcp/key");
Cursor c = managedQuery(kUri, null, null, null, null);
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题很简单,是否可以从多个应用程序访问自定义内容提供程序?
Pet*_*teH 15
是的,可以从其他应用访问自定义内容提供商.使用您的术语,我们将调用内容提供商CustomCP和其他应用程序AppA.(AppA是想要访问提供者的人).事实证明这种方法有效:
使用ContentProviderClient从AppA中指定所需的内容提供程序(CustomCP):
Uri yourURI = Uri.parse("content://com.example.customcp/YourDatabase");
ContentProviderClient yourCR = getContentResolver().acquireContentProviderClient(yourURI);
像通常从App A访问内容提供商.例如:
yourCursor = yourCR.query(yourURI, null, null, null, null);
注意:您必须将代码包含在try/catch块中,或者包含"throws RemoteException",因为提供程序不在App A中.
CustomCP的清单必须指定提供者,包括允许的权限(例如,读取和/或写入),并且必须导出提供者.这是一个例子:
<provider
android:name="your.package.contentprovider.YourProvider"
android:authorities="YourAuthority"
android:readPermission="android.permission.permRead"
android:exported="true" >
</provider>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
20354 次 |
| 最近记录: |