Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Isantel
13 / 13 / 1
Регистрация: 23.11.2010
Сообщений: 254
1

Выбор файла и переключение на другую активити для его открытия

20.05.2014, 20:22. Просмотров 1005. Ответов 3
Метки нет (Все метки)

Подскажите советом или кодом. Написал файловый менеджер для просмотра файлов на устройстве. Допустим это будет просмотрщик .txt файлов. Как мне сделать чтобы после выбора в файлменеджере файл открывался в другой активити(точней его содержимое). Файловый менеджер брал отсюда http://habrahabr.ru/post/109486/ (не знаю можно ли вставлять ссылки на другие источники). Уже два дня ломаю голову. Как я понял мне необходимо запомнить путь до файла при клике на нем и открыть другую активити передав ей этот самый путь?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 20:22
Ответы с готовыми решениями:

Выбор файла для открытия
Здравствуйте. Подскажите, пожалуйста, как на Android (java) можно организовать выбор файла в...

Порядок открытия активити в проекте
Гуру, помогите! Как убрать "заднее окно"? Заметил что когда создается активити, сначала...

Как с ListFragment передать имя файла чтобы открыть его в другом Активити?
Всем привет, я новичек! ломаю голову над такой задачей: Есть ListFragment со списком "приборов"...

Вернуться в то же активити (без открытия нового)
Здравствуйте! Такой вопрос. Есть сервис, отсылающий уведомление. По нажатию на уведомление нужно...

Не получается вызвать другую активити
пробую так: Intent intent2 = new Intent(this, IntroActivity.class); ...

3
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
21.05.2014, 10:17 2
Лучший ответ Сообщение было отмечено Isantel как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
//if we want to open file, show this dialog:
      //listener when YES button clicked
      OnClickListener okButtonListener = new OnClickListener(){
        public void onClick(DialogInterface arg0, int arg1) {
          //intent to navigate file
          Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("file://" + aDirectory.getAbsolutePath()));
          //start this activity
          startActivity(i);
        }
      };
Это то, что нам нужно. Меняем на

Java
1
2
3
Intent i = new Intent(CurrentActivity.this, TargetActivity.class);
        i.putExtra("path", aDirectory.getAbsolutePath());
        startActivity(i);
И получаем путь в активити:

Java
1
2
3
4
5
6
7
8
9
10
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        if (intent != null && intent.hasExtra("path")) {
            String filepath = intent.getStringExtra("path");            
        } else {
            finish();
        }
}
1
Isantel
13 / 13 / 1
Регистрация: 23.11.2010
Сообщений: 254
22.05.2014, 16:02  [ТС] 3
Цитата Сообщение от YuraAAA Посмотреть сообщение
И получаем путь в активити:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
*@Override
* * public void onCreate(Bundle savedInstanceState) {
* * * * super.onCreate(savedInstanceState);
* * * * Intent intent = getIntent();
* * * * if (intent != null && intent.hasExtra("path")) {
* * * * * * String filepath = intent.getStringExtra("path"); * * * * * *
* * * * } else {
* * * * * * finish();
* * * * }
}
Спасибо, но не могли бы разъяснить, этот код я вставляю в ту активити в которой будет сразу же открыт файл? Вообщем так и попробовал сделать, выбрал файл, открылась активити, вот файл видимо не открылся, так как на экране пусто. Код активити которая должна отображать содержимое файла
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
public class graph_content extends Activity {
 
    // имя файла
    private final static String FILENAME = "1.las";
    private EditText mEdit; // текстовое поле
    private String filepath; //
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        mEdit = (EditText) findViewById(R.id.editText);
        if (intent != null && intent.hasExtra("path")) {
            filepath = intent.getStringExtra("path");
        } else {
            finish();
        }
    }
 
 
    // Метод для открытия файла
    private void openFile(String fileName) {
        try {
 
            InputStream inputstream = openFileInput(filepath);
 
            if (inputstream != null) {
                InputStreamReader isr = new InputStreamReader(inputstream);
                BufferedReader reader = new BufferedReader(isr);
                String str;
                StringBuffer buffer = new StringBuffer();
 
                while ((str = reader.readLine()) != null) {
                    buffer.append(str + "\n");
                }
 
                inputstream.close();
                mEdit.setText(buffer.toString());
            }
        } catch (Throwable t) {
            Toast.makeText(getApplicationContext(),
                    "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
    }
 
 
}
я так понимаю что мне нужно вызвать функцию openFile сразу же после старта активити, но как мне сделать это не нажимая никаких кнопок на экране?

Добавлено через 17 часов 39 минут
Сделал следующим образом
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
public class graph_content extends Activity {
 
    private EditText mEdit; // текстовое поле
    private String filepath; //
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        mEdit = (EditText) findViewById(R.id.editText);
        if (intent != null && intent.hasExtra("path")) {
            filepath = intent.getStringExtra("path");
        } else {
            finish();
        }
        openFile(filepath);
    }
 
    // Метод для открытия файла
    private void openFile(String fileName) {
        try {
 
            InputStream inputstream = openFileInput(fileName);
 
            if (inputstream != null) {
                InputStreamReader isr = new InputStreamReader(inputstream);
                BufferedReader reader = new BufferedReader(isr);
                String str;
                StringBuffer buffer = new StringBuffer();
 
                while ((str = reader.readLine()) != null) {
                    buffer.append(str + "\n");
                }
 
                inputstream.close();
                mEdit.setText(buffer.toString());
            }
        } catch (Throwable t) {
            Toast.makeText(getApplicationContext(),
                    "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
    }
 
}
выдает ошибку, "file/sdcard/download/1.txt contain a path separator"

Добавлено через 20 минут
строка в манифест добавлена
XML
1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
23.05.2014, 12:00 4
Isantel,
Цитата Сообщение от Isantel Посмотреть сообщение
contain a path separator
http://stackoverflow.com/questions/1...path-separator
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 12:00

Ссылка из textView на другую активити
Добрый день, Есть textView в которое выводится различная текстовая информация из базы данных....

Передать параметр из одной активити в другую
Всем привет, дорогие форумчане! Прошлый раз мне любезно помогли здесь, мне понравилось. Так что...

Создания намерения для открытия файла
Как мне в намерении передать запрос на поиск программы для открытия файла с карты памяти? Короче...


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

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

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