xpe*_*int 51 android android-contentprovider android-syncadapter
我尝试了解Android同步逻辑.我不明白的是syncadapter.xmlAndroid SDK示例项目中包含的文件SampleSyncAdapter.如果您下载了SDK示例,则它应位于以下文件夹中:
SDK/android-sdk-PLATFORM/samples/android-VERSION/SampleSyncAdapter/res/xml/syncadapter.xml
Run Code Online (Sandbox Code Playgroud)
我读过,内容提供者的权限应该是字符串或对资源的引用.内容权限到底是什么com.android.contacts?以下是文件的内容(没有许可证信息和注释,API级别16).
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.android.contacts"
android:accountType="com.example.android.samplesync"
android:supportsUploading="false"
android:userVisible="true"
/>
Run Code Online (Sandbox Code Playgroud)
jcw*_*ger 71
制作SyncAdapter时可以使用两种基本方法:
前者是这个示例应用程序中正在发生的事情.他们有一些网站有一个联系人列表,他们希望将这些联系人与设备上的其他联系人一起存储.无论哪种情况,这一切的方式都是通过三个组成部分之间的关系:
Android设备可以有许多不同的ContentProviders和许多不同的SyncAdapter.由于ContentResolver可能不是与SyncAdapter 相同的.apk的一部分,因此ContentResolver是一种系统服务,可以找到正确的ContentProvider来存储给定类型的数据.它使用ContentAuthority字符串执行此操作,该字符串唯一标识一个特定的ContentProvider.此外,必须声明每个ContentProvider,AndroidManifest.xml以确保ContentResolver可以找到它.在此声明中,您可以指定ContentProvider是否可以被其他应用程序使用,请参阅:android:exported.
<provider
android:name=".CustomProvider"
android:authorities="com.example.app.provider"
android:exported="false"
android:multiprocess="true" >
</provider>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用现有的ContentProvider,您需要查看平台文档以查看它们使用的ContentAuthority字符串,并使用相同的字符串.如果您要创建自己的ContentProvider,则只需确保您创建的ContentAuthority是唯一的.执行此操作的最佳方法是在管理中使用您的域名(Java类样式)的一部分.以相反的顺序写下它们.这说明在他们的榜样...... com.android.contacts.
当你的APK加载时,清单中的指令告诉操作系统审查所有元数据.在这种情况下,它是Android联系人的内容元数据.用于查找提供程序的名称是com.android.contacts(由Android定义) - 并且所有者具有"权限"以提供对其数据库(即ContentProvider)的内容访问.
注意您可以成为自己数据的内容提供商,可以与非联系人的Web服务同步.元数据是一种向OS注册的机制,因此您可以在广播消息中找到它.
由于您提供的"同步类型",此定义的元数据将与您的SyncAdapter相关联.类型的名称是android:accountType,可能是'com.mycompany.myapp'.在向所有同步适配器广播期间使用该密钥,您的编码BroadcastReceiver将使用您的类型处理该消息.
这是关系的开始和术语的一些细分.
| 归档时间: |
|
| 查看次数: |
45248 次 |
| 最近记录: |