Android - brak możliwości zapisu na kartę SD

Odpowiedz Nowy wątek
2015-09-30 07:04
MKL
0

Witam. Mam problem z zapisaniem zdjęcia na kartę pamięci. Robię wszystko tak jak w dokumentacji czy różnych tutorialach, a mimo to dalej pojawia się błąd. Oczywiście ustawiłem manifest:

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

i nazwę katalogu tak jak podaje dokumetacja

File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(
        imageFileName,  /* prefix */
        ".jpg",         /* suffix */
        storageDir      /* directory */
    );

Ale mimo tego pojawia się błąd. Korzystam z Android Studio w najnowszej wersji. Uruchamiam na emulatorze (próbowałem zarówno AVD jak i genymotion). Karta SD działa poprawnie, bo systemowa aplikacja Camera poprawnie zapisuje tam pliki. Android Device monitor podaje prawa dostępu dla katalogów na karcie: drwxdrwx--x, więc chyba w porządku. Próbowałem rozmaitych urządzeń, różnych ustawień minimalnego SDK i nic - zawsze to samo. O co tu może chodzić? Czy trzeba jeszcze dodać aplikację do jakiejś grupy czy problem jest gdzieś indziej? Oglądałem tutoriale na Youtube i tam ludziom działa, robię dokładnie tak samo i mam nullpointerexception.

Pozostało 580 znaków

2015-09-30 08:13
0

Jakiś LogCat?

Pozostało 580 znaków

2015-09-30 08:40
MKL
0

http://pastebin.com/bu2WbXna

Pozostało 580 znaków

2015-09-30 09:31
0

Ale dowaliłeś.
Nie mogłeś dać tylko miejsca gdzie się apka wysypuje? ale strzelam że to jest przyczyna

09-30 06:34:11.712    2314-2314/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.u1.aplikacja, PID: 2314
    java.lang.**NullPointerException: file**
            at android.net.Uri.fromFile(Uri.java:452)
            at com.example.u1.aplikacja.MainActivity$1.onClick(MainActivity.java:73)
            at android.view.View.performClick(View.java:5198)
            at android.view.View$PerformClick.run(View.java:21147)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5417)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

NullPointerException: file

edytowany 1x, ostatnio: panryz, 2015-09-30 09:31

Pozostało 580 znaków

2015-09-30 10:25
MKL
0

Myślałem, że chodzi Ci o to co się dzieje przy ładowaniu systemu. Nullpointer wynika z tego, że nie jest tworzony plik, bo nie ma prawa do zapisu:

 private File getFile() throws IOException {
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        // Save a file: path for use with ACTION_VIEW intents
        mCurrentPhotoPath = "file:" + image.getAbsolutePath();
        return image;
    }

    (...)

    public void onClick(View v) {

    //Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File file = null;

    try {

          file = getFile();
    } catch (IOException ex) {}

    Uri pictureUri = Uri.fromFile(file);
    //cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
    //startActivityForResult(cameraIntent, CAM_REQUEST);
 }
});

Sprawdzałem to już na różne sposoby, pisałem różne inne funkcje i za nic na świecie nie chce działać. Jeśli ktoś zajmuje się Androidem, używa Android Studio i mógłby sprawdzić, czy w aktualnej wersji zapis na kartę SD działa to będę wdzięczny. To jest najprostsza aplikacja - 1 przycisk i utworzenie pliku na karcie.

Pozostało 580 znaków

2015-09-30 11:11
0

Jaki system?

Pozostało 580 znaków

2015-09-30 11:18
MKL
0

Windows 8.1 64 bit, uruchamiam emulator z Androidem 6.0 API level 23

Pozostało 580 znaków

2015-09-30 11:32
0

a próbowałeś na androidzie po poniżej 6 ?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0