2017-02-09 24 views
0

ギャラリーから写真を撮りたい、私はこのコードを使用しています。
ギャラリーから写真を撮る

コードはsumsung s4デバイスの一部の写真で動作しますが、sumsung a7では機能しません。

すべてのデバイスで動作するコードを作成します。

public class SignUpPersonalUserStep5 extends Fragment { 


public SignUpPersonalUserStep5(PersonalProfil profil) { 
    this.profil = profil; 
} 

PersonalProfil profil; 
public static final int RESULT_LOAD_PHOTO = 3; 
ImageView signUpPhoto; 
String ImageDecodableString; 
FloatingActionButton button; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.step5_sign_up, container, false); 
    signUpPhoto = (ImageView) view.findViewById(R.id.signUpPhoto); 
    signUpPhoto.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(galleryIntent, RESULT_LOAD_PHOTO); 

     } 
    }); 

    button = (FloatingActionButton) view.findViewById(R.id.step5Button); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      FragmentManager manager = getActivity().getSupportFragmentManager(); 

      SignUpPersonalUserStep4 signUpStep4 = new SignUpPersonalUserStep4(profil); 
      FragmentTransaction transaction = manager.beginTransaction(); 
      transaction.addToBackStack(""); 
      transaction.setCustomAnimations(R.anim.toastox_sheet_show, R.anim.toastox_sheet_hide); 
      transaction.replace(R.id.signUpForFragment, signUpStep4); 
      transaction.commit(); 


     } 
    }); 

    return view; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     // When an Image is picked 
     if (requestCode == RESULT_LOAD_PHOTO && resultCode == RESULT_OK 
       && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
      // Get the cursor 
      Cursor cursor = getActivity().getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      // Move to first row 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      ImageDecodableString = cursor.getString(columnIndex); 
      cursor.close(); 
      Log.d("nizar",ImageDecodableString); 
      signUpPhoto.setImageBitmap(BitmapFactory 
        .decodeFile(ImageDecodableString)); 
      // ImageDecodableString = Base64.encodeToString(ImageDecodableString.getBytes(), Base64.DEFAULT); 
      profil.setImage(ImageDecodableString); 

     } 
    } catch (Exception e) { 
     Toast.makeText(getActivity(), "Something went wrong", Toast.LENGTH_LONG) 
       .show(); 
    } 


}} 

データは空ではありません。
あなたの考えを教えてください
ありがとうございました!

+0

Android OSのバージョン:ユーザーはまた、彼らがインストールされている可能性のあるギャラリーのアプリを使用できるようにするには? – Aryan

+0

Androidバージョン6.0.1 –

+0

下記の内容を確認してください。 – Aryan

答えて

1

このコードを試してみてください。

private void requestPermission() { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION); 
     } else { 
      Intent intent = new Intent(); 
      intent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(intent, PICK_IMAGE_REQUEST); 
     } 
    } 
+0

これは私に働いた Uri Selected_Image_Uri = data.getData(); ImageView imageView =(ImageView)findViewById(R.id.loadedimg); imageView.setImageURI(Selected_Image_Uri); 問題が解決したら –

+0

に感謝します。その後、私の答えを受け入れます。 –

+0

私はBuild.VERSION.SDK_INT> = Build.VERSION_CODES.MがBuild.VERSION_CODES.Nではないと思っています。 – Aryan

0

Android SDK> = 23をターゲットにしている場合は、Android OSマシュマロ以上のユーザーがいる場合は、実行時に許可する必要があります。

https://developer.android.com/training/permissions/requesting.html

+0

問題は同じように見えるhttp://stackoverflow.com/questions/42133758/file-listfiles-returns-null-when-it-shouldnt/42133977#42133977 – Aryan

+0

これは私にとってうまくいきました。Uri Selected_Image_Uri = data.getData(); ImageView imageView =(イメージビュー)findViewById(R.id.loadedimg); imageView.setImageURI(Selected_Image_Uri);おかげで –

+0

あなたのAndroidターゲットSDKは何ですか? – Aryan

0

これはドキュメントアプリを起動します。 SUMSUNGのA7で

Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    getIntent.setType("image/*"); 
    Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    pickIntent.setType("image/*"); 
    Intent chooserIntent = Intent.createChooser(getIntent, "Select Image"); 
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{pickIntent}); 
    startActivityForResult(chooserIntent, PICK_IMAGE); 

詳細here

+0

これは私にとってうまくいきました。Uri Selected_Image_Uri = data.getData(); ImageView imageView =(イメージビュー)findViewById(R.id.loadedimg); imageView.setImageURI(Selected_Image_Uri);ありがとう –

関連する問題