Articles of android contentprovider

SampleZipfileProvider类在哪里?

在Google的扩展文件开发指南( http://developer.android.com/guide/market/expansion-files.html#ZipLib )部分的底部,有以下文字。 APEZProvider – 大多数应用程序不需要使用此类。 此类定义了一个ContentProvider,它通过内容提供程序Uri封送ZIP文件中的数据,以便为期望Uri访问媒体文件的某些Android API提供文件访问。 Apk Expansion包中提供的示例应用程序演示了一个场景,其中此类可用于使用VideoView.setVideoURI()指定video。 有关如何扩展此类以在应用程序中使用的示例,请参阅示例应用程序的类SampleZipfileProvider。 有问题的示例应用程序不包含此类。 但它确实包含对AndroidManifest.xml中的.SampleVideoPlayerActivity文件的引用,该文件也不存在于项目中。 有没有人试图实现基于APEZProvider的具体类,并将其与VideoView.setVideoURI() ? 我已经实现了这个类: public class ZipFileContentProvider extends APEZProvider { @Override public String getAuthority() { return “com.myCompany.myAppName.provider.ZipFileContentProvider”; } } 但我不知道如何在VideoView.setVideoURI()调用中使用它。 有人可以帮忙吗?

Android:内容文档:// sms /“type”值?

我知道Android中没有正式支持内容:// sms / provider。 尽管如此,我想知道是否存在一些常用的约定,这些约定出现在“type”列中,可以从content:// sms / queries返回。 例如,我知道types“1”和“2”通常分别代表“传入”和“传出”。 是否还有其他常用的types值? 例如,我有时会看到types“20”。 提前感谢任何有关此信息或讨论的指示。

如何使用ContentProvider的insert()方法通过CursorLoader将值正确插入SQLite数据库?

我正在阅读文档,但我仍然不太确定。 它说要使用getContentResolver() ,但那时确实没有使用CursorLoader。 那么有没有办法通过CursorLoader来做到这一点? 我知道如何使用query() 。 步骤非常相似吗? 即使只是一个可以解释这一点的链接也会有所帮助。 请注意,请不要将我链接到Google文档,因为他们没有使用CursorLoader从ContentProvider中使用insert()方法的示例。 提前致谢!! 编辑:我应该提到我与此混淆的原因是因为调用新的CursorLoader自动调用ContentProviders query()方法。 但是我如何才能为插入做同样的事情呢?

获取用户拍摄的最后一张照片

嘿我想通过任何相机应用程序获取用户捕获的最后一张照片。 我不知道该怎么做 谁能帮我? 此外,我想将该图像作为电子邮件或彩信的附件发送.. 谢谢

ContentProvider销毁/生命周期

我很好奇是否有人可以解释ContentProvider的生命周期。 我特别感兴趣的是,什么时候以及在什么情况下提供商被销毁。 文档似乎没有涵盖这一点。 本文的ContentProvider部分讨论了难以获得的文档,但它包含了一个指向谷歌小组讨论的链接,谷歌的工程师在其中留下了快速回复,指出“内容提供商永远不会被破坏。它们存在于整个生命周期中他们的过程。“ 好吧,也许ContentProvider可以和它的进程一样长寿,但它的进程有多长? 假设我有一个提供ContentProvider的应用程序,来自另一个应用程序的查询是我创建ContentProvider进程的唯一原因(即,还没有运行Activity或Service。)该进程是否真的会无限期地继续运行? 当Android资源不足时,它会破坏服务等组件。 当资源紧张时,ContentProviders是否也不会被摧毁?

如何在Android内容提供商中存储大blob?

我有一些大文件(图像和video),我需要存储在内容提供商。 android文档表明…… 如果您公开的字节数据太大而无法放入表本身 – 例如大型位图文件 – 向客户端公开数据的字段实际上应该包含content:URI字符串。 这是允许客户端访问数据文件的字段。 该记录还应该有另一个名为“_data”的字段,该字段列出设备上该文件的确切文件路径。 此字段不是由客户端读取,而是由ContentResolver读取。 客户端将在面向用户的字段上调用ContentResolver.openInputStream(),该字段包含项目的URI。 ContentResolver将为该记录请求“_data”字段,并且因为它具有比客户端更高的权限,所以它应该能够直接访问该文件并将该文件的读取包装器返回给客户端。 – http://developer.android.com/guide/topics/providers/content-providers.html#creating 我找一个例子有些困难。 特别是我希望在ImageView的上下文中使用位图。 考虑以下代码准代码(它不起作用)…… ImageView iv = …. String iconUri = cursor.getString(cursor.getColumnIndex(Table.ICON)); iv.setImageURI(Uri.parse(iconUri)); 意见/问题… 如何正确重建存储/恢复的uri? (这是表格中的文字) setImageURI实现使用内容解析openInputStream,所以这应该工作。 String scheme = mUri.getScheme(); … } else if (ContentResolver.SCHEME_CONTENT.equals(scheme) || ContentResolver.SCHEME_FILE.equals(scheme)) { try { d = Drawable.createFromStream( mContext.getContentResolver().openInputStream(mUri), null); –frameworks /碱/核心/ JAVA /机器人/插件/ ImageView.java 我搞定了。 […]

如何将应用程序创建的线程视为与应用程序的ContentProvider不同的应用程序?

我有一个应用程序,当ContentObserver通知ContentProvider的更改时,尝试在后台线程上查询提供程序。 这会导致抛出SecurityException : 8-10 15:54:29.577 3057-3200 / com.xxxx.mobile.android.xxx W / Binder:从绑定存根实现中捕获了RuntimeException。 java.lang.SecurityException:Permission Denial:从pid = 0读取com.xxx.mobile.android.mdk.model.customer.ContentProvider uri content://com.xxx.mobile.android.consumer.xxx/vehicle,uid = 1000要求提供者被导出,或者grantUriPermission() 在android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:539) 在android.content.ContentProvider $ Transport.enforceReadPermission(ContentProvider.java:452) 在android.content.ContentProvider $ Transport.query(ContentProvider.java:205) 在android.content.ContentResolver.query(ContentResolver.java:478) 在android.content.ContentResolver.query(ContentResolver.java:422) 应用程序创建的线程如何以应用程序的ContentProvider中的不同UID结束? 通过在android.content.ContentProvider放置一个exception断点,我看到UserHandle.isSameApp(uid, mMyUid)为false , UserHandle.isSameUser(uid, mMyUid)为true 。 我还看到提供者UID是10087。

如何从本机联系人/内容解析器获取联系人的Facebook ID或URL?

如何通过Facebook同步适配器获取已同步到本机联系人应用程序的联系人的Facebook ID或URL? 我浏览了不同的url,但没有看到有关Facebook的任何信息。 我试过了 ContactsContract.Data.CONTENT_URI ContactsContract.CommonDataKinds.Email.CONTENT_URI ContactsContract.CommonDataKinds.Phone.CONTENT_URI ContactsContract.Contacts.CONTENT_URI 作为以下代码中已有的URI: Uri uri = ContactsContract.Data.CONTENT_URI; Cursor c = getContentResolver().query(uri, null, null, null, null); while (c.moveToNext()) { for (int i=0; i<c.getColumnCount(); i++) { Log.d(TAG, c.getColumnName(i) + ": " + c.getString(i)); } Log.d(TAG, "=================================="); } 我确实得到了一个列值 contact_status_res_package: com.facebook.katana 在这个转储中,我也获得了联系人状态(contact_status列),但我无处可查看此联系人的facebookurl或ID。

从不同的应用访问自定义内容提供商

您好我已经创建了一个使用名为CustomCP的自定义内容提供程序的Android应用程序,它实现了所有方法,并且在管理应用程序内的数据时一切正常,但是当我尝试从另一个应用程序访问它时,我不断收到“失败”的错误findcom.example.customcp的提供者信息。 我在第一个应用程序的清单文件中声明了我的内容提供程序 我尝试在第二个应用程序启动活动中调用提供程序 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); } } 所以问题很简单,是否可以从多个应用程序访问自定义内容提供程序?

为什么/我们应该在Android中使用Content Provider时实现BaseColumns?

我正在浏览Google IOSched App的源代码,并注意到以下代码段作为其Content Provider实现的一部分: public static class Blocks implements BlocksColumns, BaseColumns 。 据我所知, BaseColumns只是两个常量的接口: _COUNT和_ID 。 我有两个问题: 与直接在类中拥有私有字段_ID相比,实现BaseColumns有哪些优点/缺点? 常量_COUNT的作用是什么?