Форум программистов, компьютерный форум, киберфорум
Наши страницы

Mkdirs(), Android, создание папок - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android В папке DCIM создается не нужная копия фото, как сделать чтобы не создавалась? http://www.cyberforum.ru/android-dev/thread1720413.html
Вызываю активность для получения фото следующим кодом: // Вызов камеры Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ...
Программирование Android OnPageFinished insert js Помогите разобраться с такой задачей, в методе onPageFinished не срабатывает скрипт. Сайт просто загружается и все. Не получается вставить именно скрипт. Если в link1 и link2 поместить текст или... http://www.cyberforum.ru/android-dev/thread1720404.html
Программирование Android Как называется жанр игр?
Собственно вопрос такой, как называется жанр игр где нужно собирать падающие предметы?
Программирование Android Пауза в обрисовке OpenGL
Привет всем. Я нарисовал куб, который вращается движение пальца, запустил его, но он постоянно перерисовывается. Как сделать так, чтобы он перерисовывался только когда я двигаю пальцем? Сделал так: ...
Программирование Android Парсинг Jsoup http://www.cyberforum.ru/android-dev/thread1720176.html
Тему можно закрыть.
Программирование Android Skia: --- decoder->decode returned false with picasso При работе с библиотекой picasso некоторые изображения не загружаются и в логах появляется такое сообщение, кто-нибудь сталкивался ? Как решить данную проблему ? подробнее

Показать сообщение отдельно
SpiriuS
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 23

Mkdirs(), Android, создание папок - Программирование Android

25.04.2016, 15:15. Просмотров 1018. Ответов 5
Метки (Все метки)

Всех приветствую.

В познании новой сферы разработки(Android) у меня возникли проблемы с созданием новых каталогов и файлов на съемном носителе. Перерыл много литературы, форумов и всевозможных источников, но проблема все же осталась...
У меня не осталось вариантов как только обратиться сюда. Помогите пожалуйста!

Собственно в чем проблема: Не могу создать новую папку или файл на съемном носителе(в народе SD карта).

Я смог получить программно полный путь к своей карте на телефоне, но записать не смог, хотя на сам телефон(на внутреннюю память) все прекрасно записывается.

В манифесте я все указал для чтения и редактирования данных на SD:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myapplication">
 
    <uses-feature android:name="android.hardware.usb.host" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
 
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
А вот сам код, с помощью которого я пытаюсь создать файл:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.example.myapplication;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
 
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
 
 
public class MainActivity extends Activity {
 
    final String TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    public void onClick(View view) {
 
        btnCheckUsbDevClick();
 
    }
 
    //Функция определяет путь до внешней извлекаемой карты
    // наподобие /storage/extSdCard
    private String getSDcardPath()
    {
        String exts =  Environment.getExternalStorageDirectory().getPath();
        String sdCardPath = null;
        try
        {
            FileReader fr = new FileReader(new File("/proc/mounts"));
            BufferedReader br = new BufferedReader(fr);
            String line;
            while((line = br.readLine())!=null)
            {
                if(line.contains("secure") || line.contains("asec"))
                    continue;
                if(line.contains("fat"))
                {
                    String[] pars = line.split("\\s");
                    if(pars.length<2)
                        continue;
                    if(pars[1].equals(exts))
                        continue;
                    sdCardPath =pars[1];
                    break;
                }
            }
            fr.close();
            br.close();
            return sdCardPath;
        }
        catch (Exception e)
        {
            Log.e(TAG, e.toString());
        }
        return sdCardPath;
    }
 
 
    public void btnCheckUsbDevClick()
    {
        String fullpath, foldername, filename;
        foldername = "temp/myFolder";
        filename = "myFile.txt";
 
        //Сохранение файла на карту SD:
        fullpath = getSDcardPath()
                + "/" + foldername
                + "/" + filename;
        SaveFile(fullpath, "Этот текст сохранен на карту SD");
    }
 
    //Функция, которая сохраняет файл, принимая полный путь до файла filePath и сохраняемый текст FileContent:
    public void SaveFile (String filePath, String FileContent)
    {
        //Создание объекта файла.
        File fhandle = new File(filePath);
        try
        {
            //Если нет директорий в пути, то они будут созданы:
            if (!fhandle.exists())
                if(!fhandle.mkdir())
                    Log.e(TAG, "Ошибка создания папки!");
 
            //Если файл существует, то он будет перезаписан:
            if(!fhandle.createNewFile())
                Log.e(TAG, "Ошибка создания документа");
 
            FileOutputStream fOut = new FileOutputStream(fhandle);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.write(FileContent);
            myOutWriter.close();
            fOut.close();
        }
        catch (IOException e)
        {
            Log.e(TAG, "Path " + filePath + ", " + e.toString());
        }
    }
}
Я так считаю, что я что-то намудрил в манифестит или что-то не добавил(видимо не откыл права для съемного носителя, но как это сделать? О_о )
Работаю в Android Studio(Проект создаю для Android 4.0.1 и выше).
Тесты делаю на реальном устройстве: LG Spirit, Android 5.0.1

Прикрепляю так же файл с исходниками.


Я нуждаюсь в вашей помощи и буду очень благодарен, за советы и подсказки.

Заранее спасибо большое, что уделили мне время!=)
0
Вложения
Тип файла: 7z MyApplication.7z (4.38 Мб, 0 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.