2011-02-08 119 views
2

問候,Android上傳圖片

我正嘗試在Android設備上上傳圖片。

我有以下代碼導致圖像選擇器來檢查SD卡(這是我想要的)。

Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent, 1); 

但是接下來我該做什麼?有沒有我可以重寫的一些類來處理被點擊的圖像?我試過Google搜索,但找不到任何東西。我希望有人能指出我正確的方向。


試圖採取willytate的意見,但現在我不斷收到以下錯誤:

02-08 16:58:01.574: ERROR/AndroidRuntime(16962): FATAL EXCEPTION: WebViewCoreThread 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962): java.lang.NullPointerException 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.app.Activity.startActivityForResult(Activity.java:2890) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at prestocab.driver.Main$Uploader.upload(Main.java:172) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.webkit.WebViewCore.nativeTouchUp(Native Method) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.webkit.WebViewCore.access$3300(WebViewCore.java:66) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1226) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.os.Looper.loop(Looper.java:143) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:642) 
02-08 16:58:01.574: ERROR/AndroidRuntime(16962):  at java.lang.Thread.run(Thread.java:1102) 

這裏是我的類:

public class Uploader extends Activity{ //uploader 
     @Override 
     protected void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
     } 
     public void upload(){ 
      Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent,0); 

     } 
     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      if (resultCode == RESULT_OK) { 
       Uri selectedImageUri = data.getData(); 
       String selectedImagePath = data.getDataString(); 
       Toast.makeText(Main.this, selectedImagePath, 2000); 
      } 
     } 
    } 

提前許多感謝,

+0

u能張貼解決代碼 – 2011-05-17 12:47:46

+0

嘿,我最後不得不以獲得rentacoder ... – Eamorr 2011-05-19 22:10:34

回答

3

Eamorr ,

您需要在onActivityResult()中收到返回的圖像。您將檢查requestCode值,以確保它是您希望返回的意圖。在你的情況下,你把1。然後處理圖像上傳...像這樣:

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     switch(requestCode) { 
     case 1: 
      imageUri = data.getData(); //get the Uri of the image from the returned data 
      //upload imageUri 
      break; 
     } 
    } 
} 

編輯: Eamorr。

使用此函數獲取映射到data.getDataString()的ImagePath字符串。只需通過imageUri即可。

public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    startManagingCursor(cursor); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

其實我有我的應用程序,所以我已經通過所有這些障礙相同的功能> <