获取图像的路径

use*_*801 2 android mime android-intent mime-types

我创建了一个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>  
Run Code Online (Sandbox Code Playgroud)

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

Sid*_*ele 6

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

Uri uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);
Run Code Online (Sandbox Code Playgroud)

然后,如果您需要在a中显示图像ImageView,请使用以下命令:

imageView.setImageURI(uri);
Run Code Online (Sandbox Code Playgroud)

可选代码:

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

// PASS THE URI INSTANCE FROM THE CODE ABOVE IN THE CONSTRUCTOR
File file = new File(getRealPathFromURI(uri));
Run Code Online (Sandbox Code Playgroud)

方法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); 
}
Run Code Online (Sandbox Code Playgroud)

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

imageView.setImageUri(Uri.fromFile(file));
Run Code Online (Sandbox Code Playgroud)