获取图像的路径

时间:2013-04-15 10:14:46

标签: android android-intent mime-types mime

我创建了一个mime类型的活动,如下图所示。

<activity android:name=".xxxx"                        
            android:launchMode="singleTop"
            android:excludeFromRecents="true"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:theme="@style/AppTheme">                        
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:host="xxxx.xxxx.net"></data>
                 <data android:mimeType="image/*" />            
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CHOOSER" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:host="xxxx.xxxx.net"/>
                 <data android:mimeType="image/*" />
            </intent-filter>
            </activity>  

现在当用户点击照片并进入图库并分享我的应用程序即将到来并且当他点击它时我能够启动上述活动...现在我的问题是如何获得该图像的路径?

2 个答案:

答案 0 :(得分:6)

这将为您提供 .xxxx Activity

中Uri实例的路径
Uri uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);

然后,如果您需要在ImageView中显示图像,请使用:

imageView.setImageURI(uri);

可选代码:

如果您还需要设备上图像的绝对路径(我在使用TwitPic API将图像上传到Twitter时发现这是必要的约束),那么下面的代码将为您提供File实例中设备上图像的绝对路径。由于这个位在OP中不清楚,我想一点额外的代码不会受到伤害。 ; - )

// PASS THE URI INSTANCE FROM THE CODE ABOVE IN THE CONSTRUCTOR
File file = new File(getRealPathFromURI(uri));

方法getRealPathFromURI(Uri uri)

public String getRealPathFromURI(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
}

使用文件文件实例设置图像:

imageView.setImageUri(Uri.fromFile(file));

答案 1 :(得分:0)

protected void onActivityResult(int requestCode, int resultCode,
        Intent resultData) {
    super.onActivityResult(requestCode, resultCode, resultData);

    Uri selectedImage = resultData.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

            uploadImagePath = cursor.getString(columnIndex);
            bitmapUploadImage = BitmapFactory.decodeFile(uploadImagePath);
            profileImageView.setImageBitmap(bitmapUploadImage);
            cursor.close();

}