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

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

Войти
Регистрация
Восстановить пароль
 
Isantel
13 / 13 / 1
Регистрация: 23.11.2010
Сообщений: 254
#1

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

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

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

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
21.05.2014, 10:17 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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();
        }
}
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>
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
23.05.2014, 12:00 #4
Isantel,
Цитата Сообщение от Isantel Посмотреть сообщение
contain a path separator
http://stackoverflow.com/questions/1...path-separator
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 12:00
Привет! Вот еще темы с ответами:

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

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

Как из одного активити строку передать в другую в виде listView - Программирование Android
это первое активитиpublic class TodoActivity extends Activity implements View.OnClickListener { private EditText mTaskInput; ...

Выбор активити из уведомления - Программирование Android
Добрый день. Есть у меня главная активити, которая, в общем-то, работатет в фоне и бросает уведомления. Проблема в том, что есть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.05.2014, 12:00
Ответ Создать тему
Опции темы

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