2016-10-01 10 views
0

カメラ、ギャラリーから受信した結果データでイメージビューを設定しようとしています。カメラインテントがコード内で動作しない

私は4つのImageViewを持っているので、選択した画像ビューの要求コードの変更に応じて、このキャプチャとギャラリー変数に割り当てられます。

private void picselect(int capture, int gallery) { 
    final CharSequence[] items = {"Take Photo", "Choose from Library", 
      "Cancel"}; 

    a=capture; 
    b=gallery; 
    AlertDialog.Builder builder = new AlertDialog.Builder(
      EditProfile.this); 
    builder.setItems(items, new DialogInterface.OnClickListener() { 


     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      if (items[item].equals("Take Photo")) { 
       Calendar cal = Calendar.getInstance(); 
       File file = new File(Environment.getExternalStorageDirectory(), 
         (cal.getTimeInMillis() + ".jpg")); 
       if (!file.exists()) { 
        try { 
         file.createNewFile(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } else { 

        file.delete(); 
        try { 
         file.createNewFile(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
       uricam = Uri.fromFile(file); 
       Intent takePicture = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       Log.d("shanOutput", String.valueOf(uricam)); 
       takePicture.putExtra(MediaStore.EXTRA_OUTPUT, uricam); 
       startActivityForResult(takePicture,a); 


      } else if (items[item].equals("Choose from Library")) { 

       Intent photoPic = new Intent(Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(photoPic,b); 


      } else if (items[item].equals("Cancel")) { 
       dialog.dismiss(); 
      } 
     } 
    }); 
    builder.show(); 

} 

private String getRealPathFromURI(Uri contentURI) { 
    String result; 
    Cursor cursor = getContentResolver().query(contentURI, null, 
      null, null, null); 

    if (cursor == null) { 

     result = contentURI.getPath(); 
    } else { 
     cursor.moveToFirst(); 
     int idx = cursor 
       .getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
     result = cursor.getString(idx); 
     cursor.close(); 
    } 
    return result; 
} 

このonActivityResult

ギャラリーから画像を受信
if (resultCode == RESULT_OK) { 

       if(imageReturnedIntent!=null){ 
        Uri selectedImage = imageReturnedIntent.getData(); 
        if(selectedImage!=null){ 

         profileImage.setImageURI(selectedImage);} 
        sendImageToServer(String.valueOf(getRealPathFromURI(selectedImage)),1); 

        Log.d("shanImage", String.valueOf(getRealPathFromURI(selectedImage))); 
       } 


      } 

の内側に書かれた私のコードは正常に動作しているが、一部はnullを返しています。私のコードで何が欠けているのですか?誰かがこのモジュールを完成するために私を導くことができますか?

+0

a =キャプチャ; b = gallery;この値が必要なint値は – Saveen

答えて

0

onActivityResult()に配信してUriを返しません。

EXTRA_OUTPUTを使用しているので、画像はどこにあるかを知っています。EXTRA_OUTPUTに入れた場所です。それで、あなたのイメージを見てください。

This sample applicationは、EXTRA_OUTPUTの使用を示している。特に、targetSdkVersionが24以上になると、Android 7.0以降のデバイスでUri.fromFile()を使用できないため、FileProviderが使用されます。

+0

です –

関連する問題