Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
#1

Отправка файлов из программы - Программирование Android

01.11.2014, 22:14. Просмотров 664. Ответов 4
Метки нет (Все метки)

Всем привет!
Написал ПО, которое собирает базу данных, потом по задумке пользователь должен отправить мне этот файл базы данных, но стандартными средствами, когда сообщение формируется в почтовом клиенте файл отправить нельзя, так как он лежит в папке ПО, к которой нет доступа у других приложений.
Посоветуйте как лучше сделать, может можно в программу клиент встроить, но тогда каким образом она отправлять будет файл, ведь не будет настроен никакой почтовый ящик.
Спасибо
http://www.cyberforum.ru/android-dev/thread791485.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2014, 22:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отправка файлов из программы (Программирование Android):

Циклический запуск программы для файлов в папке, имена файлов в виде параметров для программы
Имеется задача - с помощью bat файла циклически запускать программу convert.exe...

Winsock отправка файлов.
Доброе время суток! пишу клиент.серв приложение с использованием winsock'a...

Отправка файлов PHP
На сервере есть php файл: <?php $uploaddir = 'papka/'; if...

Отправка файлов в Интернет
Доброе время суток. Меня интересует отправка файлов(любых) с компьютера...

Отправка файлов на почту
Подскажите материал для изучения. Хочу научиться программно работать с...

4
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
03.11.2014, 18:17 #2
NOSC, здравствуй!
Недавно делал схожую операцию. Требовалось отправить самому себе файл, скачиваемый с сервера, при помощи электронной почты. Верно замечено, что файл на нерутованном устройстве будет недоступен для сторонних программ. В этом случае вам следует сделать следующее:
1) почитать про работу с картой памяти,
2) определить, что она есть, доступна для записи, и скопировать файл туда в некоторую папку,
3) вызвать E-mail клиент и заполнить некоторые поля (тема, сообщение, вложенный файл),
4) по окончании работы или, может быть, при рестарте активности удалить файл с карты памяти.
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
05.11.2014, 22:38  [ТС] #3
Цитата Сообщение от CoolMind Посмотреть сообщение
2) определить, что она есть
А можно тогда копировать не на карту памяти а в память телефона?? я делал подобное, но как раз была проблема что человек с Гуглопланшетом не смог воспользоваться как раз по той причине что на нем не было карты SD
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
06.11.2014, 00:49 #4
NOSC, в общем, я не знаю, про какую марку устройства идёт речь, но слышал, что в версии 4.4 внедрили новую схему работы с картами памяти. Не помню, как это звучит, но по умолчанию карты памяти не имеют значения, и все данные копируются в память устройства, а не на карту памяти, как хотелось бы.
По вашему вопросу пока ничего сказать не могу, не пробовал. Может быть, и можно это как-то сделать, почитайте, потом нам расскажете.

Добавлено через 15 минут
Поискал, но пока не нашёл. Сомнения берут, что даже если такое возможно, другие программы смогут прочитать такой файл.
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
14.11.2014, 14:54  [ТС] #5
В общем я сделал вот так:
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
void copy() {
          String destFile = Environment.getExternalStorageDirectory().toString().concat("/metro.db");
 
            try {
                File file = new File(destFile);
                // откуда копируем
                InputStream in = getAssets().open("/metro.db");
 
                OutputStream out = new FileOutputStream(file);
 
                byte[] buf = new byte[1024];
 
                int len;
 
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
 
                in.close();
                out.close();
 
                System.out.println("Файл скопирован.");
 
            } catch (FileNotFoundException ex) {
                System.out
                        .println(ex.getMessage() + " in the specified directory.");
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
      }
Но что-то не правильно, потому что в логах
11-14 14:03:23.623: I/System.out(2992): /metro.db in the specified directory.
База соответственно находится в /data/data/<имя пакета>/databases/metro.db
Предполагаю что неправильно здесь
InputStream in = getAssets().open("/metro.db");
Думал что возможно стоит "/databases/metro.db" написать, но эффект тот же

Добавлено через 48 минут
Цитата Сообщение от NOSC Посмотреть сообщение
Предполагаю что неправильно здесь
InputStream in = getAssets().open("/metro.db");
Решено! Файл не в assets на момент работы программы ведь, по этому:
InputStream in = new FileInputStream ("/data/data/<имя пакета>/databases/metro.db");
0
14.11.2014, 14:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2014, 14:54
Привет! Вот еще темы с решениями:

Отправка файлов по почте
Сделал бат который делает резервное копирование важных файлов, и у меня не...

Поиск и отправка файлов
Вот код: echo Ищем все файлы... rem for %%i in (c d e f) do dir %%i: /A:-D...

Отправка файлов на почту
Здравствуйте! Подскажите, пожалуйста, как реализовать такую функцию: у меня на...

Отправка файлов по почте
Приветствую! Подскажите пожалуйста, как организовать: Есть отправка сообщения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru