2013-02-22 50 views
1

所以我找到了一個會提示用來打開設備庫的函數。但是在四處搜索時我找不到任何能夠幫助我修改此內容以返回圖像路徑的內容。他們說了一些關於onActivityResult()的內容,我把它放在void本身上,然後被拒絕。對此有何幫助?r如何修改此函數以返回圖像路徑?

public void chooser() { 
     AlertDialog.Builder myDialog 
     = new AlertDialog.Builder(IPAddress.this); 

     myDialog.setTitle("Import Menu Images"); 

     LinearLayout layout = new LinearLayout(IPAddress.this); 
     layout.setOrientation(LinearLayout.VERTICAL); 
     myDialog.setView(layout); 

     myDialog.setPositiveButton("Open Folder", new DialogInterface.OnClickListener() { 
      // do something when the button is clicked 
      public void onClick(DialogInterface arg0, int arg1) { 

       Intent i = new Intent(
         Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
         startActivityForResult(i, 1); 
       } 
      }); 

     myDialog.setNegativeButton("Exit", new DialogInterface.OnClickListener() { 
      // do something when the button is clicked 
      public void onClick(DialogInterface arg0, int arg1) { 
       arg0.dismiss(); 
       } 
      }); 

     myDialog.show(); 
} 

我想這回選擇的圖像的路徑,然後我會使用該路徑複製所述文件並將其保存到我對活動的OnCreate中創建的目錄。

另外,我似乎無法能夠調試上述功能,當我點擊「打開文件夾」按鈕,它會給出一個錯誤說

The application Camera(process.com.android.gallery) has stopped unexpectedly. Please try again.

,我已經試過多次。我甚至在模擬器中添加了前置攝像頭。

的功能在這裏稱爲:

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

     @Override 
     public void onClick(View arg0) { 
     chooser(); 
     } 

    }); 

所以我想選擇器返回一個字符串類型,如果有可能,我會再使用進行文件的複製,然後重命名(?)。

+0

該方法是如何調用的?你想在哪裏返回路徑? – 2013-02-22 03:41:59

+0

我會發布它被稱爲sory的地方,請稍等片刻 – 2013-02-22 03:43:33

回答

1

默認的應用選擇器可以通過以下方式進行查詢。

Button galleryBtn = (Button) view.findViewById(R.id.gallery_btn); 
     galleryBtn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       Intent intent = new Intent(); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       startActivityForResult(
       Intent.createChooser(intent, "Select Picture"), 2); 

      } 
     }); 

然後您將在活動/片段的onActivityResult()中收到選定文件的URi。

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 

     super.onActivityResult(requestCode, resultCode, data); 

     Uri uriString = null; 

     if (requestCode == 2 && resultCode == RESULT_OK) { 
      Uri uri = data.getData(); 
      if (uri != null) { 

       Cursor cursor = getActivity().getContentResolver() 
         .query(uri, 
           new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, 
           null, null, null); 
       cursor.moveToFirst(); 


       Bitmap bm = BitmapFactory.decodeFile(cursor.getString(0)); 
       File file = new File(cursor.getString(0)); 

       uriString = Uri.fromFile(file); 

     // do processing with the uri here 

       cursor.close(); 

      } 

     }else{ 
      Log.e("RDT", "Something went wrong."); 
      return; 
     } 
} 
+0

我可以問問bm是什麼意思? – 2013-02-22 05:34:37

+0

其位圖對象..請參閱http://developer.android.com/reference/android/graphics/Bitmap.html – 2013-02-22 05:48:22