Articles of android contentprovider

如何从本机联系人/内容解析器获取联系人的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的作用是什么?

在Android应用程序生命周期中缓存数据的好方法?

保持我的问题简短,我创建了一个包含3个活动的应用程序,其中A – 类别列表,B – 项目列表,C – 单项。 B和C中显示的数据是从在线XML解析的。 但是,如果我通过A – > B1 – > C,然后回到A然后再回到B1,我希望将其数据缓存到某处,这样我就不必再次请求XML了。 我是Android和Java编程的新手,我已经google了很多,但仍然无法find(或者根本就没有想法去哪里看看)一种方法来做我想要的。 将所有收到的数据存储在主要活动A(HashMaps?ContentProviders?)中然后传递给B和C(如果他们得到以前的相同请求)是个好主意?

Android:通过Content Provider访问SQLite数据库还是实现DAO?

我想知道哪种方法是访问我的应用程序数据库的最佳方法:使用内容提供程序,或手动实现我的DAO? 根据我最近的调查,似乎内容提供商,即使是内部使用应用程序,也是可取的,但我不确切知道每种方法的缺点是什么。 你能给出一些反馈意见吗?

如何解决多个内容提供商?

我创建了两个内容提供程序,它们在同一个SQLite数据库的两个不同的表上工作。 他们共享一个SQLiteOpenHelper实例,如Ali Serghini的post所述 。 每个内容提供商都在AndroidManifest.xml注册,如下所示。 每个内容提供商定义所需的内容URI并提供UriMatcher 。 public class PostsProvider extends BaseContentProvider { private static final UriMatcher sUriMatcher = buildUriMatcher(); private static final int POSTS = 100; private static final int POST_ID = 101; private static UriMatcher buildUriMatcher() { final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); final String authority = CustomContract.CONTENT_AUTHORITY; matcher.addURI(authority, DatabaseProperties.TABLE_NAME_POSTS, POSTS); matcher.addURI(authority, DatabaseProperties.TABLE_NAME_POSTS […]

如何跨应用程序限制内容提供商数据

我们如何确保某些应用程序无法访问存储在内容提供商中的数据,而某些其他应用程序可以访问该数据? 基本上我需要允许一些我感兴趣的应用程序访问存储在Content Provider中的数据,但我不希望所有应用程序都能够访问该数据。 我怎样才能做到这一点? 谢谢。

Android:在ContentProvider中调用自定义方法

我有一个自定义ContentProvider,用于将从GPS获取的修复程序存储到SQLite数据库中。 此类重写ContentProvider方法(删除,插入,查询…),但请注意我还包含一个查询上一个修复的方法。 public class FixesContentProvider extends ContentProvider { @Override public int delete(…) { … } … @Override public Cursor query(…) { … } public Cursor getLastFix(Uri uri) { … } } 通过调用getContentResolver()来查询来自其他服务或活动的数据非常容易。 ContentResolver cR = getContentResolver(); Cursor fixes = cR.query(CONTENT_URI, …); 但我无法调用我的自定义方法( FixesContentProvider#getLastFix )。 我怎样才能调用ContentProvider中定义的自定义方法? 也许我不明白ContentProviders / ContentResolvers在这种情况下是如何工作的,但Google提供的官方Android文档在这个意义上并不是很清楚。

如何从Android获取whatsapp联系人?

我试图通过电话获得whatsapp联系,我得到whatsapp联系的总数,但是从RawContacts如何获得whatsapp我不知道的号码和名称。 我试图find解决方案,但无法得到确切的解决方案。 请帮帮我。 我把我的代码放在下面。 ContentResolver cr = context.getContentResolver(); Cursor c = cr.query( ContactsContract.RawContacts.CONTENT_URI, new String[] { ContactsContract.RawContacts.CONTACT_ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY }, ContactsContract.RawContacts.ACCOUNT_TYPE + “= ?”, new String[] { “com.whatsapp” }, null); ArrayList myWhatsappContacts = new ArrayList(); String projection[] = { ContactsContract.CommonDataKinds.Phone.NUMBER }; if(c != null) { if (c.getCount() > 0) { while (c.moveToNext()) { String whatsappContactId = […]

Android – 使用Dao Pattern和contentProvider

使用带有dao Pattern的ContentProvider是正确的。 ? 或者它会带来任何性能问题? 我会尽力解释。 我有一个contentProvider。 一个活动,一个道和一个豆.. 这是代码: class Bean(){ String name; } class Dao{ Activity activity; public Dao(Activity activity){ this.activity = activity; public List getAllBean() { Cursor c = activity.managedQuery(Bean.CONTENT_URI, PROJECTION, null, null, Bean.DEFAULT_SORT_ORDER); return BeanMapper.GetAllFromCursor(c); } } } Class Activity{ ….. onCreate(….){ Dao dao = new Dao(this); List aList = dao.getAllBean(); } ….} […]