2013-11-28 116 views
1

am使用活动作为对话框。在那里我有按钮来浏览并选择图像以在图像视图中显示它。从SD卡中浏览图像以在android的图像视图中显示它?

我的对话活动代码和浏览图像

public class Update_profile extends Activity{ 

private Uri mImageCaptureUri; 

private static final int PICK_FROM_FILE = 1; 

private View rootView; 
Button save,browse_image; 
ImageView profile_pic; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setBackgroundDrawable(new ColorDrawable(0)); 
    setContentView(R.layout.update_profile); 

    Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { 
     @Override 
     public void uncaughtException(Thread t, Throwable e) { 
      android.os.Process.killProcess(android.os.Process.myPid()); 
      System.exit(0); 
     } 
    }); 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    this.rootView=findViewById(R.id.update_profile_details); 
    profile_pic = (ImageView)findViewById(R.id.update_profile_picture); 

    save = (Button)findViewById(R.id.save); 
    browse_image = (Button)findViewById(R.id.browse_image); 
    browse_image.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent intent = new Intent(); 

      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 

      startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE); 

     } 
    }); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode != RESULT_OK) return; 

    Bitmap bitmap = null; 
    String path  = ""; 

    if (requestCode == PICK_FROM_FILE) { 
     mImageCaptureUri = data.getData(); 
     path = getRealPathFromURI(mImageCaptureUri); //from Gallery 
     Log.v("Path", ""+path); 

     if (path == null) 
      path = mImageCaptureUri.getPath(); //from File Manager 
     Log.v("Path", ""+path); 

     if (path != null) 
      bitmap = BitmapFactory.decodeFile(path); 
    } else { 
     path = mImageCaptureUri.getPath(); 
     Log.v("Path", ""+path); 
     bitmap = BitmapFactory.decodeFile(path); 
    } 

    profile_pic.setImageBitmap(bitmap);  
} 

public String getRealPathFromURI(Uri contentUri) { 
    String [] proj  = {MediaStore.Images.Media.DATA}; 
    Cursor cursor  = managedQuery(contentUri, proj, null, null,null); 

    if (cursor == null) return null; 

    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 

    cursor.moveToFirst(); 

    return cursor.getString(column_index); 
} 

@SuppressLint("NewApi") 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
    Rect rect = new Rect(); 
    rootView.getHitRect(rect); 
    if (!rect.contains((int)event.getX(), (int)event.getY())){ 
     setFinishOnTouchOutside(false); 
      return true; 
    } 
     return false;  
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 

     finish(); 
    } 
    return true; 
} 
} 

我的清单代码。当我使用上述普通的活动方式浏览图片的代码更改活动作为一个对话框

<activity 
     android:name="test.Update_profile" 
     android:excludeFromRecents="true" 
     android:launchMode="singleInstance" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.Dialog" 
     android:windowSoftInputMode="stateHidden" > 
</activity> 

它获取的图像,并在图像视图中显示,但在这个对话框activity.its现在能够选择图像。我想拍照从对话activity.am图像不能够解决这个问题。任何人都可以帮助我解决这个问题。

+0

如果我给UA然后你可以在网格视图中设置所有图像,然后你也可以在点击网格视图元素时显示你的图像 –

+0

@BhanuSharma我想要图像的路径。 – Yugesh

+0

ohk看到我的答案我给你所有的细节文件路径也哥们:) –

回答

1

如果u想以检索从GALLARY直接再使用此代码 http://viralpatel.net/blogs/pick-image-from-galary-android-app/

这是我从SD卡获取所有的文件和你刚刚把它保存在一个DataController类类乐施会的花花公子方法

private void getallimages() 
      { 
       String[] STAR = { "*" }; 


       final String[] columns = { MediaStore.Images.Thumbnails._ID , MediaStore.Images.Media.DATA}; 
       final String orderBy = MediaStore.Images.Media.DEFAULT_SORT_ORDER; 
       Cursor imagecursor = ((Activity) cntx).managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, STAR, null, null, orderBy); 
       int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID); 
       int imgNameIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME); 
       int count = imagecursor.getCount(); 
       for (int i = 0; i < count; i++) { 
        imagecursor.moveToPosition(i); 
        int id = imagecursor.getInt(image_column_index); 
        ImageItem imageItem = new ImageItem(); 
        imageItem.id = id; 
        imageItem.filePath = imagecursor.getString(imagecursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
        lastId = id; 
        imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(cntx.getContentResolver(), id,MediaStore.Images.Thumbnails.MICRO_KIND, null); 
        imageItem.selection = false; //newly added item will be selected by default 
        controller.images.add(imageItem); 
       } 

      } 

这是的ImageItem包装类

public class ImageItem { 
      public boolean selection=true; 
      public int id; 
      public Bitmap img; 
      public String filePath; 
      public String fileType; 
    } 
+1

这是什么** lastId(它的上一图像路径)**。 – Yugesh

+0

只是删除这行忘了这个因为这是我用来维护列表视图中的位置,所以你只是避免这 –

+0

thanks.it检索所有图像path.but我需要选择性的图像路径(在我的问题中说什么)。 – Yugesh

0
You can try this : 

    public class EMView extends Activity { 
    ImageView img,img1; 
    int column_index; 
    Intent intent=null; 
    // Declare our Views, so we can access them later 
    String logo,imagePath,Logo; 
    Cursor cursor; 
    //YOU CAN EDIT THIS TO WHATEVER YOU WANT 
    private static final int SELECT_PICTURE = 1; 

    String selectedImagePath; 
    //ADDED 
    String filemanagerstring; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     img= (ImageView)findViewById(R.id.gimg1); 



    ((Button) findViewById(R.id.Button01)) 
    .setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      // in onCreate or any event where your want the user to 
      // select a file 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, 
        "Select Picture"), SELECT_PICTURE); 


     } 
    }); 
} 

//UPDATED 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == Activity.RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
      Uri selectedImageUri = data.getData(); 

      //OI FILE Manager 
      filemanagerstring = selectedImageUri.getPath(); 

      //MEDIA GALLERY 
      selectedImagePath = getPath(selectedImageUri); 


      img.setImageURI(selectedImageUri); 

      imagePath.getBytes(); 
      TextView txt = (TextView)findViewById(R.id.title); 
      txt.setText(imagePath.toString()); 


      Bitmap bm = BitmapFactory.decodeFile(imagePath); 

      img1.setImageBitmap(bm); 



     } 

    } 

} 

//UPDATED! 
public String getPath(Uri uri) { 
String[] projection = { MediaColumns.DATA }; 
Cursor cursor = managedQuery(uri, projection, null, null, null); 
column_index = cursor 
     .getColumnIndexOrThrow(MediaColumns.DATA); 
cursor.moveToFirst(); 
imagePath = cursor.getString(column_index); 

return cursor.getString(column_index); 
} 

} 
+0

对于简单的活动,你的答案工作正常,但不是对话(使用活动作为对话)。 – Yugesh

相关问题