我想在图像选择器意图中添加“删除”选项

时间:2015-03-09 12:19:26

标签: android android-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);
       }
   }

2 个答案:

答案 0 :(得分:6)

通过创建一个主题为NoDisplay的新活动,我能够通过意图选择器执行此操作:

首先创建活动,该活动将用于通知用户想要删除图像的主要活动:

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

您可以在清单中指定图标和标签。确保您还将主题设置为NoDisplay,以避免它使用意图选择器覆盖实际活动。

<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"
    />

然后您可以将其添加到意图选择器中。我检查图像是否先前已设置,以避免在没有图像时添加选项。

if (imageSet) {
    Intent removeImageIntent = new Intent(activity, DeleteProfileImageActivity.class);
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {removeImageIntent} );
}

然后,您可以使用DeleteProfileImageActivity中指定的密钥侦听目标数据的活动结果,当前为remove_image

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data.hasExtra("remove_image") && imageSet) {
        // remove/reset the image here
    }
}

答案 1 :(得分:0)

您必须创建警报对话框。在那里,您可以选择,并在其中添加删除选项。在删除选项时使用此:

else if (options[item].equals("Remove")) {
                ImageView.setImageDrawable(null);
                dialog.dismiss();
            }

如需更多帮助,请参阅http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample/