我通过查询ContentResolver从系统中获取记录.我维护数据库中项目的顺序.所以我想按照从我的数据库中获取的顺序显示项目.
我如何合并这两个信息?
编辑1
我现在正在寻找另一种方式.正如我理想的那样:
使用Cursor和Joiners是不可能的,因为order by缺少功能,我还需要返回一个Cursor,因为我将在ExpandableList中使用它
这也转换为TSQL
select * from contactsdata
left join category on contactsdata.catid=category.id
order by category.pos asc, contact.display_name asc
Run Code Online (Sandbox Code Playgroud)
所以我现在正在寻找另一种选择.
我想在CR中加载一个临时数据库表中的所有数据,然后在临时表上进行查询,我可以在哪里连接表并按顺序执行操作?这听起来怎么样?
我正在使用以下代码在设备上构建电子邮件地址列表以显示在ListActivity.目前我可以检索确定的电子邮件地址,但它们的形式出现了:null (email@address.com)而name (email@address.com)不是理想的.我正在使用的代码也应该检索名称:
Cursor c = getContentResolver().query(Email.CONTENT_URI,
new String[]{Email.CONTACT_ID, Email.DISPLAY_NAME, Email.DATA},
null, null, null);
addresses = new String[c.getCount()];
try{
c.moveToFirst();
for(int i = 0;i<c.getCount();i++){
addresses[i] = c.getString(1) + " (" + c.getString(2) + ")";
c.moveToNext();
}
} finally {
c.close();
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?
我有一个应用程序需要获取给定联系人的照片.我有联系人的电话号码,有没有办法通过ContentResolver或任何其他表格通过电话号码检索联系人的照片?我一直在寻找,但没有找到答案.
我真的想强调使用电话号码获取联系人照片的重要性(如果存在).谢谢.
您正在使用此代码从以下方法获取Android联系人列表中最后一个参数的联系人即 null
谁能告诉我如何按字母顺序对联系人列表进行排序?我通过哪个参数,所以我得到所需的输出:
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
Run Code Online (Sandbox Code Playgroud) 情况是我有一个MainFragment(extends a ListFragment, implements LoaderManager.LoaderCallbacks<Cursor>) 是从MainActivity. DetailsActivity从该片段调用一个新活动以在列表视图中显示某个项目的内容,将 id 作为意图参数。如何getContentResolver()使用 Uri 访问其方法?
我现在从访问内容解析器中得到的错误是:
`java.lang.IllegalArgumentException: Unknown URL content://com.xxxx.words.contentprovider/words`
uri = Uri.parse(MainContentProvider.CONTENT_URI.toString());
getContentResolver().insert(uri, contentValues);
CONTENT_URI = Uri.parse("content://" + "com.xxxx.words.contentprovider" + "/" + "words");
Run Code Online (Sandbox Code Playgroud)
安卓清单文件:
<provider
android:authorities="com.xxxx.words.contentprovider.MainContentProvider"
android:name=".contentprovider.MainContentProvider"/>
Run Code Online (Sandbox Code Playgroud)
或者我应该只返回一个Bundle从DetailsActivity初始片段和访问的内容提供商?
android android-contentresolver android-contentprovider android-fragments android-activity
我有一个覆盖的MyContentProvider类bulkInsert().在这种方法中,我使用SQLite事务在数据库中插入大约4,000行,这在Samsung Galaxy S4设备上大约需要25秒.
但是,当我从我的方法中删除此行时bulkInsert()...
getContext().getContentResolver().notifyChange(insertedId, null);
...总插入时间下降到大约1或2秒.
那么,有更好的方式来打电话notifyChange()吗?
我试过在另一个线程中调用它,像这样......
new Thread(new Runnable() {
public void run() {
getContext().getContentResolver().notifyChange(insertedId, null);
}
}).start();
Run Code Online (Sandbox Code Playgroud)
......但它仍然缓慢,而由于某种原因,导致一个OutOfMemoryError.
为了完整,这是我的bulkInsert()方法......
@Override
public int bulkInsert(Uri uri, ContentValues[] valuesArray) {
/*
* Open a read / write database to support the transaction.
*/
SQLiteDatabase db = dbHelper.getWritableDatabase();
String tableName;
switch (uriMatcher.match(uri)) {
case BRANDS_SEARCH:
tableName = BRAND_NAMES_TABLE;
break;
case PRODUCTS_SEARCH:
tableName = PRODUCTS_TABLE;
break;
case PARENT_COMPANIES_SEARCH:
tableName …Run Code Online (Sandbox Code Playgroud) sqlite performance android android-contentresolver android-contentprovider
我正在使用Cursor从图库中获取图像并从图库中获取所有图像,有没有办法只获取少数最近的图像,例如最近捕获的 20 张图像。
我面临的另一个问题是图像从旧到新的顺序,我想以相反的顺序(从新到旧)获取图像。
final String[] columns = { MediaStore.Images.Media.DATA,
MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Run Code Online (Sandbox Code Playgroud)
我获取图像的代码:
public void getImg(){
Cursor imagecursor = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
null, orderBy);
int image_column_index = imagecursor
.getColumnIndex(MediaStore.Images.Media._ID);
this.count = imagecursor.getCount();
this.thumbnails = new Bitmap[this.count];
this.arrPath = new String[this.count];
this.thumbnailsselection = new boolean[this.count];
for (int i = 0; i < this.count; i++) {
imagecursor.moveToPosition(i);
int id = imagecursor.getInt(image_column_index);
int dataColumnIndex = imagecursor
.getColumnIndex(MediaStore.Images.Media.DATA);
thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
getApplicationContext().getContentResolver(), id,
MediaStore.Images.Thumbnails.MICRO_KIND, null);
arrPath[i] …Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像加载到ImageView库中Picasso.
这是代码
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode!= Activity.RESULT_OK) return;
switch (requestCode) {
case PICK_GALLERY_IMAGE_REQUEST: {
Uri imageUri = data.getData();
Log.d(DEBGUG_TAG,"Image URI: "+imageUri.toString());
Picasso picasso = Picasso.with(getApplicationContext());
picasso.setLoggingEnabled(true);
picasso.load(imageUri).error(R.drawable.c).into(testImgView, new com.squareup.picasso.Callback(){
@Override
public void onSuccess() {
Log.d(DEBGUG_TAG,"Success loading image from uri:PICASSO");
}
@Override
public void onError() {
Log.d(DEBGUG_TAG,"Cannot load image");
}
});
Run Code Online (Sandbox Code Playgroud)
问题是从图库中选择图像时,它返回文件路径
D/debug: Image URI: file:///storage/emulated/0/DCIM/Camera/IMG_20170126_211524.jpg
这似乎不适用于Picasso作为返回错误并记录D/debug: Cannot load image错误方法.
但是,从另一个返回的应用程序中选择相同的图像Uri:
D/debug: Image URI: content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F90455/ORIGINAL/NONE/1757236944成功.
有没有办法从文件路径加载图像?
我正在创建一个应用程序来读取手机的手机通讯录.但是,由于我不知道的原因,我使用该query方法时遇到问题,因为我使用的是api版本.它说Call requires API level 26 (current min is 16): android.content.ContentResolver#query.
这是我在oncreate方法中使用的代码.
public void searchContacts() {
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i("try", name + " = " + number);
} while (cursor.moveToNext());
}
cursor.close();
}
Run Code Online (Sandbox Code Playgroud)
我知道它应该可行,因为我一直在观看的教程API版本低于我的.
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "raymundo.elsa.elsa"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" …Run Code Online (Sandbox Code Playgroud) android gradle android-contentresolver build.gradle android-studio-3.0