2015-05-21 6 views
0

Я новичок в разработке приложений для Android. Моя команда и я создаем приложение, которое использует папки фотогалереи для загрузки фотографии. Приложение может сделать снимок и загрузить эту фотографию сразу. Но, в частности, с устройствами samsung, когда я пытаюсь загрузить фото из папки камеры, приложение либо сбой, либо загружает белую страницу. Когда я пытаюсь создать другую папку из галереи, кроме папки с камерой, это тоже отлично работает. Он дает эту ошибку только папке с камерой. Я тестировал свое приложение с различными устройствами связи, и он работал абсолютно идеально. Я искал это где угодно и везде. Я написал все коды на Android Studio вместе с Java и XML. Кто-нибудь имел такую ​​же проблему и смог ее решить? Мне действительно нужно руководство. Спасибо за ваше время и ваше внимание.Проблемы с загрузкой приложений для приложений Android

Вот мой метод Java onGalleryClick:

public void onGalleryClick(View v) { 

    isCameraReleased = true; 
    //TODO 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, 
      "Select Picture"), SELECT_PICTURE); 
} 
+1

показать код загрузки. – SmulianJulian

+0

У меня была аналогичная проблема с использованием устройств LG. Какое приложение открывает фотогалерею? –

+0

Я добавил свой метод onGalleryClick. – tuygun

ответ

0

Я думаю, что я понял это с внедрением библиотеки Пикассо. Наконец, я могу получить доступ к папке камеры (некоторые из устройств - это DCIM), когда я попал в галерею. Я считаю, что устройства Samsung имеют очень низкую виртуальную память и, как-то, не позволяют вам видеть изображение в приложении Android, которое вы создаете. В основном я создал очень простую кнопку на студии android, и она называется activity_main.xml. Коды:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<ImageView 
    android:id="@+id/imgView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" > 
</ImageView> 

    <Button 
    android:id="@+id/buttonLoadPicture" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight="0" 
    android:onClick="loadImagefromGallery" 
    android:text="Load Picture" > 
    </Button> 

</LinearLayout> 

После этого я создал MainActivity.java, который дает все функциональные возможности. Что:

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    private static int RESULT_LOAD_IMG = 1; 
    String imgDecodableString; 

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

public void loadImagefromGallery(View view) { 
    // Create intent to Open Image applications like Gallery, Google Photos 
    Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    // Start the Intent 
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     // When an Image is picked 
     if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK 
       && null != data) { 
      // Get the Image from data 

      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      // Get the cursor 
      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      // Move to first row 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      imgDecodableString = cursor.getString(columnIndex); 
      cursor.close(); 
      ImageView imgView = (ImageView) findViewById(R.id.imgView); 
      // Set the Image in ImageView after decoding the String 
      imgView.setImageBitmap(BitmapFactory 
        .decodeFile(imgDecodableString)); 

     } else { 
      Toast.makeText(this, "You haven't picked Image", 
        Toast.LENGTH_LONG).show(); 
     } 
    } catch (Exception e) { 
     Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG) 
       .show(); 
    } 

} 

} 

И это строка кода, который нужно добавить на AndroidManifest файла:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Вот хитрая часть всего. в вашем build.gradle (Module: app) вы собираетесь добавить скомпилировать 'com.squareup.picasso: picasso: 2.3.3' в разделе зависимостей.

После того, как вам нужно добавить

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

    Picasso.with(this) 
      .load("https://cms-assets.tutsplus.com/uploads/users/21/posts/19431/featured_image/CodeFeature.jpg") 
      .into(imageView); 

И там вы идете! Пожалуйста, обратите внимание http://code.tutsplus.com/tutorials/android-sdk-working-with-picasso--cms-22149

Смежные вопросы