Android 将图像附加到联系人

Android 将图像附加到联系人,android,image,contact,Android,Image,Contact,我的问题与描述的完全相同 我试图利用这一意图: android.provider.contacts.contract.Intents.ATTACH\u IMAGE 启动一项活动,允许用户选择要附加图像的联系人。 听起来很适合我,但不幸的是导致了ActivityNotFoundException 代码: import android.provider.ContactsContract; ... try { Intent myIntent = new Intent();

我的问题与描述的完全相同

我试图利用这一意图:
android.provider.contacts.contract.Intents.ATTACH\u IMAGE

启动一项活动,允许用户选择要附加图像的联系人。

听起来很适合我,但不幸的是导致了
ActivityNotFoundException

代码:

import android.provider.ContactsContract;  
...  
try {  
    Intent myIntent = new Intent();  
    myIntent.setAction(ContactsContract.Intents.ATTACH_IMAGE);  
    myIntent.setData(imageUri);  
    startActivity(myIntent);  
} catch (ActivityNotFoundException anfe) {  
    Log.e("ImageContact", 
            "Firing Intent to set image as contact failed.", anfe);  
    showToast(this, "Firing Intent to set image as contact failed.");  
}
try {  
    Intent myIntent = new Intent();  
    myIntent.setAction(Intent.ACTION_ATTACH_DATA);
    myIntent.setData(imageUri);  
    startActivity(myIntent);  
} catch (ActivityNotFoundException anfe) {  
    Log.e("ImageContact", 
            "Firing Intent to set image as contact failed.", anfe);  
    showToast(this, "Firing Intent to set image as contact failed.");  
}
我在上面的代码中找不到任何错误。
imageUri
是正确的,因为以下代码工作正常:

代码:

import android.provider.ContactsContract;  
...  
try {  
    Intent myIntent = new Intent();  
    myIntent.setAction(ContactsContract.Intents.ATTACH_IMAGE);  
    myIntent.setData(imageUri);  
    startActivity(myIntent);  
} catch (ActivityNotFoundException anfe) {  
    Log.e("ImageContact", 
            "Firing Intent to set image as contact failed.", anfe);  
    showToast(this, "Firing Intent to set image as contact failed.");  
}
try {  
    Intent myIntent = new Intent();  
    myIntent.setAction(Intent.ACTION_ATTACH_DATA);
    myIntent.setData(imageUri);  
    startActivity(myIntent);  
} catch (ActivityNotFoundException anfe) {  
    Log.e("ImageContact", 
            "Firing Intent to set image as contact failed.", anfe);  
    showToast(this, "Firing Intent to set image as contact failed.");  
}

如链接中所述,在访问联系人之前,会出现另一个菜单。这是可以接受的,但并不完美。

我也有这个问题。通过使用以下取自

但是,在选择联系人并裁剪图像后,是否仍未设置新联系人图标

// Save the name and description of an image in a ContentValues map.  
ContentValues values = new ContentValues(3);
values.put(Media.DISPLAY_NAME, "road_trip_1");
values.put(Media.DESCRIPTION, "Day 1, trip to Los Angeles");
values.put(Media.MIME_TYPE, "image/jpeg");

// Add a new record without the bitmap, but with the values just set.
// insert() returns the URI of the new record.
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);

// Now get a handle to the file for that record, and save the data into it.
// Here, sourceBitmap is a Bitmap object representing the file to save to the database.
try {
    OutputStream outStream = getContentResolver().openOutputStream(uri);
    sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream);
    outStream.close();
} catch (Exception e) {
    Log.e(TAG, "exception while writing image", e);
}

如果您已经知道可以使用的文件路径:

values.put(Images.Media.DISPLAY_NAME, fileName);
values.put(Images.Media.DATE_ADDED, currentTime);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.Media.ORIENTATION, 0);
values.put(Images.Media.DATA, filePath);
values.put(Images.Media.SIZE, size);

getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);

这样,如果您已经有了文件,就不需要打开位图流。

1.6、2.1、2.2-2.0似乎可以正常工作。1似乎有一个错误,因为联系人图像无法从库图像手动设置。谢谢您的回复。您是打算直接读取联系人ID并附加图像,还是aou仍在使用intent“android.provider.ContactsContract.Intents.ATTACH\U图像”?阅读内容提供商页面在我看来,我必须建立自己的联系人列表来获取ID,然后让用户选择一个,然后覆盖他/她的图像。或者我误解了什么?我正在使用Intent(Intent.ACTION\u ATTACH\u DATA)为我提供了两个Intent活动,用于设置我想要的联系人图标和壁纸。抱歉,无法帮助您解决联系人ID问题。上述代码中有一条警告-添加联系人后,您必须手动删除在“照相机”文件夹中创建的图像。我还没有找到更好的方法以临时方式创建Uri。startActivityForResult对联系人没有任何帮助。AttachImage返回取消标志:(嗯,抱歉,我一开始可能不清楚。我的图库中有一张由摄像头拍摄的图像,因此已经在mediastore中。我对该图像有一个URI,我想将该特定图像附加到联系人(由用户选择).我看不出上面的代码如何帮助我:(