2011-02-08 44 views
2

グリーティング、Androidアップロード画像

私はAndroid搭載端末に画像をアップロードしようとしています。

イメージピッカーを起動してSDカード(これは私が欲しいものです)を調べるコードは次のとおりです。

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

次に何をしますか?クリックされた画像を扱うために上書きできるクラスがありますか?私はグーグルで試しましたが、何も見つかりませんでした。誰かが私を正しい方向に向けることを願っています。


は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は解決コード –

+0

を投稿することができます>ので、私はこれらすべてのハードルを進めてきた私のアプリで同じ機能を持っています... – Eamorr

+0

よろしいですか?ありがとう... –

答えて

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

EDIT: Eamorrそして、そのような画像のアップロードを...扱います。

インスタントImagePath文字列をdata.getDataString()にするには、この関数を使用します。ちょうど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); 
} 

私は実際にはねえ、私はrentacoderを得るためになってしまった<

+0

ねえ、ありがとう。私は今どこかに行っていると思う。私は "アップローダー"サブクラスを持っています。私はちょうど "活動"からそれを拡張し、私は物事が私の計画通りに動作することを望んでいる!アイルランドからの応援、 – Eamorr

+0

ちょっとwillytate、ちょうど私の記事を編集しました。それ以上の洞察があれば、それは非常に感謝しています。 – Eamorr

+0

返されたimageUriの文字列を取得するためのコードが追加されました。 –