Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
#1

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

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

Всем привет!
Написал ПО, которое собирает базу данных, потом по задумке пользователь должен отправить мне этот файл базы данных, но стандартными средствами, когда сообщение формируется в почтовом клиенте файл отправить нельзя, так как он лежит в папке ПО, к которой нет доступа у других приложений.
Посоветуйте как лучше сделать, может можно в программу клиент встроить, но тогда каким образом она отправлять будет файл, ведь не будет настроен никакой почтовый ящик.
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2014, 22:14     Отправка файлов из программы
Посмотрите здесь:

Отправка параметров WebView Android
Android Отправка и прием сообщений
Android Отправка get запроса
Android Отправка email
Отправка смс, где номер и соообщение берутся из удалённых файлов Android
Android Отправка смс
Android Отправка данных на сервер
SMS-отправка Android
Отправка данных Android
Android Отправка POST
Android Отправка координат ссылкой
Цвет файлов в VCS - поменять синий цвет имен файлов Android

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

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

Добавлено через 15 минут
Поискал, но пока не нашёл. Сомнения берут, что даже если такое возможно, другие программы смогут прочитать такой файл.
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");
Yandex
Объявления
14.11.2014, 14:54     Отправка файлов из программы
Ответ Создать тему
Опции темы

Текущее время: 03:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru