我想在图像选择器 Intent 中添加删除选项,我成功添加了画廊选项和相机选项,它们工作正常,但我想添加删除选项,如果我选择删除选项,图像应该从 imageview 中删除。
提前致谢:)
我的代码:
public void edit_profile_pic(View view) {
Uri uri = null;
Intent GalleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent CameraIntent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
CameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
Intent chooserIntent = Intent.createChooser(CameraIntent, "Choose");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {GalleryIntent, CameraIntent});
startActivityForResult(chooserIntent, RESULT_LOAD_IMG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
ImageView imageView = (ImageView) findViewById(R.id.profile_profile_picture);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
{
Bitmap bitmap = null;
if(data.getData()!=null)
{
try
{
InputStream stream = getContentResolver().openInputStream(data.getData());
bitmap = BitmapFactory.decodeStream(stream);
stream.close();
imageView.setImageBitmap(bitmap);
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
bitmap=(Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(bitmap);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
最佳答案
我能够通过创建一个主题为 NoDisplay 的新 Activity 来使用 Intent 选择器来做到这一点,如下所示:
首先创建将用于通知主 Activity 用户要删除图像的 Activity :
public class DeleteProfileImageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent resultIntent = new Intent();
resultIntent.putExtra("remove_image", true);
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
您可以在 list 中指定图标和标签。确保您还将主题设置为 NoDisplay,以避免它用 Intent 选择器掩盖实际 Activity 。
<activity
android:name=".activity.profilesetup.DeleteProfileImageActivity"
android:label="@string/title_activity_delete_profile_image"
android:icon="@drawable/ic_delete_image_red"
android:theme="@android:style/Theme.NoDisplay"
/>
然后您可以将其添加到 Intent 选择器中。我检查之前是否设置了图像,以避免在没有图像时添加选项。
if (imageSet) {
Intent removeImageIntent = new Intent(activity, DeleteProfileImageActivity.class);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {removeImageIntent} );
}
然后您可以使用 DeleteProfileImageActivity
中指定的键监听 Intent 数据的 Activity 结果,当前为 remove_image
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data.hasExtra("remove_image") && imageSet) {
// remove/reset the image here
}
}
关于android - 我想在图像选择器 Intent 中添加 "remove"选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941834/