2

我创建了一个 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>  

现在,当用户单击照片并转到图库并确实共享我的应用程序时,当他单击它时,我能够启动上述活动...现在我的问题是如何获取该图像的路径?

4

2 回答 2

6

这将为您提供.xxxx中 Uri 实例中的路径 Activity

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); 
}

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

imageView.setImageUri(Uri.fromFile(file));
于 2013-04-15T10:37:36.290 回答
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();

}
于 2013-04-15T10:36:37.387 回答