Articles of android contentresolver

getcontentresolver()未定义types

我尝试获取所有联系人姓名和号码,我正在尝试使用getContentResolver但我得到了 方法获取内容解析器()未定义types 这个错误。 我该如何解决? 以下是代码: public class ContactManager { public ArrayList getContactNumber() { Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); while (phones.moveToNext()) { String name = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phoneNumber = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } phones.close(); } }

麻烦编写内部内存android

void launchImageCapture(Activity context) { Uri imageFileUri = context.getContentResolver() .insert(Media.INTERNAL_CONTENT_URI, new ContentValues()); m_queue.add(imageFileUri); Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri); context.startActivityForResult(i, ImportActivity.CAMERA_REQUEST); } 以上代码一直有效,现在在insert()中为我生成了这个例外。 java.lang.UnsupportedOperationException: Writing to internal storage is not supported. at com.android.providers.media.MediaProvider.generateFileName(MediaProvider.java:2336) at com.android.providers.media.MediaProvider.ensureFile(MediaProvider.java:1851) at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2006) at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1974) at android.content.ContentProvider$Transport.insert(ContentProvider.java:150) at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:140) at android.os.Binder.execTransact(Binder.java:287) at dalvik.system.NativeStart.run(Native Method) 这不是一个空间问题,我唯一改变的是一个不相关的类的包。 另外,我重新启动了手机。

Android:根据电话号码搜索联系人

我必须根据电话号码搜索联系人。 以下是用于获取联系人的代码。 我使用的Android API级别是15 String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.NUMBER}; Cursor query = mContent.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.NUMBER + ” LIKE ‘%” + constraint.toString() + “%'” ,null, ContactsContract.Contacts.DISPLAY_NAME + ” COLLATE LOCALIZED ASC”); 我能够在联系人表格中保存的电话号码中获取没有空格的联系人。 如果电话号码之间有空格,则上述查询失败。 例如,对于联系人,如果电话号码保存为1234567890,并且当我使用值1234搜索时,将检索此联系人。 但如果联系人保存为“123 456 7890”,则会失败。 最重要的是,当我尝试搜索包含或包含“1234”电话号码的联系人时,结果应该返回电话号码为“1234567890”和“123 4567 890”的联系人。 由于一些Android手机节省了电话号码之间的空间。 我该如何解决这个问题。 任何帮助表示赞赏。

Android:如何使用contentResolver仅更新多个记录中的一列

如何使用内容解析器更新多个记录的一个特定列? update(Uri uri, ContentValues values, String where, String[] selectionArgs) 上面的函数是否要求我重写contentValues对象中每条记录的所有值? 当我使用这个函数只有一个值,如: ContentValues value = new ContentValues(); value.put (Voicemails.IS_READ, 1 );//mark as read int iRowsUpdated=contentResolver.update(uri, value, null, null); 然后我得到了exception“无法更新URI:content://com.android.voicemail/voicemail?…不支持批量更新”,这可能是因为“where”设置为null; 一个教程提到“要批量更新内容提供程序中的一组记录,请调用ContentResolver.update()方法,并使用要更改的列和值。” 但我无法做到这一点……我仍然不知道如何只更新所有记录中的一列,基本上我需要将阅读的语音邮件标记为已读。

外部(例如脸书)联系人在android上的照片

我写了一个短信应用程序,在概述中显示了我的联系人的联系人照片。 获得“正常”照片是没有问题的: Uri cu = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId); final InputStream input = Contacts.openContactPhotoInputStream(getContext().getContentResolver(), cu); return BitmapFactory.decodeStream(input); 问题是:例如facebook提供的联系人照片不存在,我怎样才能获得这些“外部”照片?

无法查询ContentResolver以从my_downloads获取下载文件的名称,但在all_downloads中正常工作

我的应用程序设置为在打开扩展名为.myappdata的文件后激活。 它通过这个intent-filter完成了这个: 我打开Chrome网络浏览器(在运行Android 6.0.1的Nexus 7上),然后转到下载名为“file123.myappdata”的文件的网站,然后点击Chrome中的“打开”链接。 该操作会触发我的应用程序打开并运行此代码,这将获取下载的文件名: Uri uri = this.getIntent().getData(); if (uri.getScheme().equals(“content”)) { Cursor cursor = getContentResolver().query(uri, null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { return cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); } } finally { cursor.close(); } } 当这段代码运行时(从Chrome打开文件后),uri就是内容:// downloads / my_downloads / 1602 , cursor.moveToFirst()返回false 然后我退出我的应用程序并转到下载应用程序并打开完全相同的文件。 这会触发我的应用程序打开,运行相同的代码除了使用uri 内容:// downloads / all_downloads / 1602 […]

什么是MINI_THUMB_MAGIC以及如何使用它?

背景 我注意到MediaStore.Images.ImageColumns的一个奇怪的列叫做“ MINI_THUMB_MAGIC ”。 文档说的只是: 迷你拇指id。 types:INTEGER 常数值:“mini_thumb_magic” 这个问题 我的猜测是这个字段与MediaStore.Images.Thumbnails有关。 这是对的吗 ? 如果没有,这是什么以及如何使用它? 如果它是正确的,我还有其他相关的问题: 它是原始的迷你尺寸图像吗? 它是使用相同的宽高比还是对它进行中心裁剪? 为什么“MICRO”的大小是方形(96 x 96),“MINI”的大小是非方形矩形(512 x 384)? 你如何使用它? 我的猜测是它是通过使用“ THUMB_DATA ”完成的,这是一个blob,所以你这样使用它,但是如果你已经拥有这个字段,那么使用“ getThumbnail ”的目的是什么? 如果方向值不是0,它会获得旋转的缩略图吗? 意思是如果我想展示它,我不需要旋转图像? 是否可以与缩略图一起查询图像? 也许使用内连接? 它适用于所有Android设备和版本吗? 为什么它甚至被称为“魔术”? 是因为它也适用于video(由于某些原因,音乐不存在,例如,它可能是专辑的封面照片)?

无法find提供商信息错误

我想要一个contentprovider,但我遇到了麻烦,因为我收到了“无法findcom.example.alex.hopefulyworks的提供商信息”的错误 这是清单和内容提供者 package com.example.alex.hopefulythisworks; …. public class ColorContentProvider extends ContentProvider { private ColorHelper database; private static final String AUTHORITY = “com.example.alex.hopefulythisworks”; private static final String BASE_PATH = “tasks”; public static final Uri CONTENT_URI = Uri.parse(“content://” + AUTHORITY + “/” + BASE_PATH); public static final String CONTENT_URI_PREFIX = “content://” + AUTHORITY + “/” + BASE_PATH + […]

获取相册名称为Android的专辑封面

我想在listview中显示带有专辑名称的专辑封面。 但我没有得到显示专辑封面的方式。 我从android上的封面艺术尝试过。 这是我的代码: Cursor cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, null, null, null, null); if (cursor == null) { //Query Failed , Handle error. } else if (!cursor.moveToFirst()) { //No media on the device. } else { int titleColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM_ART); int id = cursor.getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM_ID); //here value im getting -1 . for(int i=0;i<cursor.getCount();i++) { if(id<0) { Long […]

使用addPeriodicSync时,停止同步适配器最初同步

我在我的项目中使用同步适配器,它将定期同步。 要为同步适配器创建帐户,我使用以下代码。 我面临的问题是此代码触发了初始同步。 文档中没有提到此代码将使同步最初运行。 事实上,即使在谷歌示例项目中,也有额外的代码用于触发我已删除的初始同步。 我使用了此示例中的代码: http : //developer.android.com/samples/BasicSyncAdapter/index.html 即使我添加命令ContentResolver.cancelSync(account,null); 同步适配器仍然运行。 如何阻止同步适配器最初同步。 它应该在同步间隔周期过去后第一次同步。 Account account = new Account(context.getPackageName(), context.getPackageName()); AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE); if (accountManager.addAccountExplicitly(account, null, null)) { // Inform the system that this account supports sync ContentResolver.setIsSyncable(account, context.getPackageName(), 1); // Inform the system that this account is eligible for auto sync when the […]