Я написал код, который позволяет пользователям выбирать фотографии профиля из галереи. Пока что код выглядит следующим образом.выберите изображение из галереи Android
(1) В полях под действием я объявил кнопку, изображение и статическое целое число.
private Button btnChooseProfile;
private ImageView ivProfile;
private static final int RESULT_LOAD_IMAGE = 1;
(2) Теперь, я делаю их фактически видимыми на экране с помощью метода onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate();
setContentView(R.layout.activity_register);
btnChooseProfile = (Button) findViewById(R.id.btnChooseProfile);
ivProfile = (ImageView) findViewById(R.id.ivProfile);
btnChooseProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RESULT_LOAD_IMAGE);
}
};
(3) И, наконец, я отменяю метод onActivityResult, чтобы определить, что происходит после нажатия на кнопке btnChooseProfile.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String imagePath = cursor.getString(columnIndex);
cursor.close();
ivProfile.setImageBitmap(BitmapFactory.decodeFile(imagePath));
}
}
Когда я запускаю код, мне удается получить доступ к галерее. После выбора изображения я ожидал бы, что изображение будет содержать выбранное изображение, но как-то приложение просто закончится.
Я уже прочитал довольно много решений, предложенных на сайте, и, похоже, нет проблем с самим фрагментом кода. Если мне что-то не хватает, пожалуйста, дайте мне несколько советов, и это очень понравится.
спасибо.
РЕДАКТИРОВАТЬ здесь ловушка. (Log уровень: отладки)
07-13 15:15:25.961 28110-28110/com.marshall.gruppo E/﹕ Device driver API match
Device driver API version: 29
User space API version: 29
07-13 15:15:25.961 28110-28110/com.marshall.gruppo E/﹕ mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Tue Jul 22 19:59:34 KST 2014
07-13 15:15:26.051 28110-28110/com.marshall.gruppo D/OpenGLRenderer﹕ Enabling debug mode 0
07-13 15:15:28.726 28110-28110/com.marshall.gruppo D/dalvikvm﹕ GC_FOR_ALLOC freed 153K, 6% free 14269K/15064K, paused 9ms, total 9ms
07-13 15:15:28.751 28110-28110/com.marshall.gruppo D/AbsListView﹕ Get MotionRecognitionManager
07-13 15:15:28.831 28110-28110/com.marshall.gruppo D/dalvikvm﹕ GC_FOR_ALLOC freed 115K, 6% free 14329K/15088K, paused 12ms, total 12ms
07-13 15:15:28.861 28110-28110/com.marshall.gruppo I/dalvikvm-heap﹕ Grow heap (frag case) to 33.649MB for 19955728-byte allocation
07-13 15:15:28.876 28110-28119/com.marshall.gruppo D/dalvikvm﹕ GC_FOR_ALLOC freed 1K, 3% free 33816K/34580K, paused 13ms, total 13ms
07-13 15:15:33.401 28110-28110/com.marshall.gruppo W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection
07-13 15:15:37.681 28110-28110/com.marshall.gruppo D/AbsListView﹕ onDetachedFromWindow
Logcat войти пожалуйста. –
@ Редактирование anandSingh. Но логарифм, похоже, мало что показывает. – MarshallLee