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)
现在,当用户点击照片并进入图库并分享我的应用程序即将到来,当他点击它时我能够启动上述活动...现在我的问题是如何获得该图像的路径?
这将为您提供.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)
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |