2017-10-21 6 views
1
package com.example.sugandhabansal.gallerypickimage; 

import android.content.Intent; 
import android.content.res.Resources; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends AppCompatActivity { 
    private static final int SELECTED_PIC = 1; 
    ImageView imageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     imageView = (ImageView) findViewById(R.id.imageView); 
    } 

    public void btnClick(View v) { 
     Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(intent, SELECTED_PIC); 
    } 

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

     super.onActivityResult(requestCode, resultCode, data); 

     switch (requestCode) { 
      case SELECTED_PIC: 
       if (resultCode == RESULT_OK) { 
        Uri uri = data.getData(); 
        String[] projection = {MediaStore.Images.Media.DATA}; 

        Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
        cursor.moveToFirst(); 

        int columnIndex = cursor.getColumnIndex(projection[0]); 
        String filepath = cursor.getString(columnIndex); 
        cursor.close(); 

        Bitmap bitmap = BitmapFactory.decodeFile(filepath); 
        Drawable drawable = new BitmapDrawable(Resources.getSystem(), bitmap); 
        imageView.setBackground(drawable); 
       } 
       break; 
      default: 
       break; 
     } 
    } 
} 

これはMainActivity.javaファイルです。コードは基本的にギャラリーから画像を読み込み、それをレイアウトの画像ビューセクションに表示します。 私はスマートフォンでapkを実行したとき、選択後にイメージビューセクションにイメージが表示されず、デバッグ後にビットマップがnullに等しいことがわかりました。 誰かがこの問題を解決できないので私に助けてくれますか?bitmapFactory.decodefile出力としてnullを与える

+0

をファイルパス文字列であるか確認し、それにビットマップの工場と関連するすべてのコードをコメントアウト。ファイルパス上の簡単なトーストができます。 – user6657161

答えて

2
  • 取得したファイルパスが有効なパスであることを確認してください。
  • ストレージにアクセスする権限があることを確認してください。

上記のものは大丈夫です、あなたはまだヌル結果を取得する場合は、次のコードを試してみてください。

Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); 
+0

解決に感謝します。それは私のために働いた。 – Sugandha

関連する問題