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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
#1

Как загружать/хранить файл в SQLite? - Программирование Android

12.02.2015, 21:35. Просмотров 2006. Ответов 17
Метки нет (Все метки)

Есть список, нужно по клику на айтеме открывать текстовый файл или картинку, и вопрос стоит в том как их доблять к определенному айтему с сохранением в SQLite (ну т.е. добавил файл и когда надо открыл), ну или как это вообще делается?

1. какой принцип?
2. какой примерно код должен быть на кнопке выбора файла?
3. как этот файл или его путь должен и сохраняться в sqlite или ресурсах?

Подскажите пожалуйста!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2015, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как загружать/хранить файл в SQLite? (Программирование Android):

Безопасно ли хранить данные в SQLite? - Программирование Android
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Безопасно ли хранить данные в SQLite? Что нужно сделать...

Как правильно загружать изображения? - Программирование Android
Разрабатываю приложение для игры. Уже выпустил тестовую версию и из первой сотни установивших у двух человек вылезла такая ошибка: ...

Как загружать картинки на стену Вконтакте? - Программирование Android
Проблему с авторизацией решил, но не пойму как загружать картинки. Помогите:)

Как удобнее загружать огромный массив в приложение? - Программирование Android
Как удобнее грузить данные? есть огромный массив чисел (Float) которые нужно подгружать в приложение как это правильнее делать? ...

Как при появлении Wifi загружать данные - Программирование Android
Есть приложение. В нем есть много фрагментов которые подгружают данные из сервера, но юзер зашел в него и забыл включить WiFi, сделал там...

Где хранится файл базы данных SQLite на устройстве? - Программирование Android
Здравствуйте друзья! Где храниться файл базы данных SQLite на устройстве или может этот файл создается автоматически при загрузке...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
13.02.2015, 09:14 #2
Картинки храните в assets/files/drawable, а в бд пути к файлам. Считываете то что в итеме и соответсвенно ему читаете путь к картинке.
0
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
13.02.2015, 09:22  [ТС] #3
Rube, рад видеть...

Картинки храните в assets/files/drawable
если просто нужно хранить картинку в БД тут понятно, а если в приложении ее надо загрузить напр с sd-карты, что должно быть на кнопке выбора файла, и чтоб сам файл копировался в этот assets?

а в бд пути к файлам
БОЛЬШОЙ вопрос, как запилить путь к файлу в БД?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
13.02.2015, 11:51 #4
В БД файлы как таковые не хранятся, только пути у ним, загрузить с карты вполне возможно (я с этим не работал еще), но не в assets (т.к. эта папка доступна только при разработке приложения, как и drawable), а в пространство приложения (напр. в папку files).
Как запилить путь к файлу в БД - сперва надо сохранить файл, а в БД вставить путь - пара строк кода. Получить путь тоже легко.
0
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
20.02.2015, 16:59  [ТС] #5
Rube, таки "Продолжаем разговор" ©Карлсон.

научился закидывать путь на картинку которая хранится на SD-карте в создаваемой программой папке в базу SQLite.
Java
1
2
3
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, generateFileUri());
            startActivityForResult(intent, REQUEST_CODE_PHOTO);
Java
1
2
3
4
5
6
7
8
9
private Uri generateFileUri() {
            
              file = new File(/*directory.getPath(FilePath)*/"/mnt/sdcard/Cribe/Photo" + "/" + "photo_"
                  + System.currentTimeMillis() + ".jpg");
                    Log.d(TAG, "fileName = " + file);
                    FilePath=file.toString();
            return Uri.fromFile(file);
                    
          }
Java
1
2
3
4
5
6
public void onButtonClick(View view) {
            if (Predmet[id_predm] == "Математика") {
                // добавляем запись
                    if(FilePath!=null){         
                db.addRec(et.getText().toString(), R.drawable.andr, FilePath);
......
и остановился с вопросом о том, как(и чем) по клику на айтеме открывать картинку по пути который есть в базе, и может (если это не сложно) открывать эту картинку в новом активити приложения с возможностью масштабирования, не знаю как логичнее, может я и загнул с этим?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
21.02.2015, 22:00 #6
Я думаю надо открывать новый активити с ImageView. Путь получаем из БД путем чтения id из адаптера и кидаем его в источник для ImageView. Как-то так.
0
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
23.02.2015, 11:11  [ТС] #7
Rube,
Путь получаем из БД путем чтения id из адаптера
путь получил он лежит в String link, если я правильно понимаю то мои id_col и arg3 - это одно и то же, только получено разными способами или я ошибаюсь?

если да то с id_col понятно, а откуда адаптер знает id ?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
 
                    final ImageView img = (ImageView)findViewById(R.id.imageView1);
                    id_col= cursor.getInt(0);
                    String link= cursor.getString(3);
                //   String st=String.valueOf(id_col); 
                                         String st=String.valueOf(arg3);
                     
                     Toast tst = Toast.makeText(getBaseContext(), link, Toast.LENGTH_SHORT);
                        tst.show();
 
                            }
кидаем его в источник для ImageView
подскажите пожалуйста поподробнее источник вроде это - findViewById(R.id.imageView1);, а как-так мой путь туда "кидать" ?

P/S/ наклевывается такая мысля:
Java
1
2
3
4
//  img.set(незнаю каким методом, и что передать arg3 или id_col);
                        
                        intent = new Intent(getApplicationContext(), ImageV.class);
                        startActivity(intent);
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
23.02.2015, 21:46 #8
Цитата Сообщение от disx Посмотреть сообщение
откуда адаптер знает id
Если не путаю, arg3 это порядковый номер итема в листвью, отсюда получаем значение адаптера по позиции arg3. Т.е. данные адаптера и отображение в листвью это одно и тоже.
Цитата Сообщение от disx Посмотреть сообщение
подскажите пожалуйста поподробнее источник вроде это - findViewById(R.id.imageView1)
Java
1
2
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageDrawable(Drawable.createFromPath("/mnt/sdcard/***.jpg"));
Это лишнее в слушателе, если, я так понимаю ImageView будет в другой активити?
Java
1
final ImageView img = (ImageView)findViewById(R.id.imageView1);
Передавайте путь в интенте через putExtra, а во 2-й активити ищите img и сетьте путь.

Добавлено через 3 минуты
А путь картинки из БД получите запросом после нахождения значения из адаптера. Т.е. найти путь WHERE полетакоето = 'значение'.
0
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
24.02.2015, 11:34  [ТС] #9
Rube, значение из адаптера это - String st=String.valueOf(arg3); ?

Т.е. найти путь WHERE полетакоето = 'значение'.
найти путь - чем это делается ?,

запрос как-то так должен быть "SELECT*FROM 'DB_TABLE' WHERE 'lnk'='что здесь должно быть?'"

lnk - это столбец где хранятся пути.

куда вставлять этот запрос?

Добавлено через 10 минут
во второй активити сделал так:

Java
1
2
3
4
5
6
    
        ImageView imview = (ImageView)findViewById(R.id.imageView1);
        Intent intent = getIntent();
        
        String FilePath = intent.getData().getPath(); //Выкидывает пока по этой строчке NullPointerEx...
        imview.setImageDrawable(Drawable.createFromPath(FilePath));
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
24.02.2015, 12:36 #10
Цитата Сообщение от disx Посмотреть сообщение
запрос как-то так должен быть "SELECT*FROM 'DB_TABLE' WHERE 'lnk'='что здесь должно быть?'"
lnk - это столбец где хранятся пути.
куда вставлять этот запрос?
"SELECT lnk FROM 'DB_TABLE' WHERE 'поле1' = тут значение из адаптера, что там у вас в листвью отображается?
Я не могу уже отвечать на вопросы в слепую, не зная полной картины приложения.
Допустим в бд хранятся дни недели (day) и пути к картинкам (path), заполняем листвью курсорадаптером так:
"SELECT day FROM 'DB_TABLE'
Щелкаем по итему Среда, значит arg2 = 2
Java
1
2
3
4
Cursor cursor = (Cursor) arg0.getItemAtPosition(arg2); // получаем курсор в позиции 2
Intent intent = new Intent(this, ImageV.class);
intent.putExtra("ключ", cursor.getString(0)); // передаем в интент значение курсора (Среда), где 0 - первый столбец
startActivity(intent);
Во 2-м активити получаем интент (Среда) и засылаем запрос
"SELECT path FROM DB_TABLE WHERE day = 'Среда'"
0
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
24.02.2015, 13:01  [ТС] #11
Rube, Извиняюсь, но чета совсем потерял "нить повествования"......

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
public class OneActivity extends Activity {
 
    private static final int CM_EDIT_ID = 0;
    private static final int CM_DELETE_ID = 1;
    private static final int IDD_EDIT = 2;
    protected static final int RUS = 1;
    protected static final int MATH = 0;
    
 
    final String TAG = "MyLog";
    ListView lvData, LOne;
    public DB db;
    Intent intent;
String arg=null;
    int id_col;
    SimpleCursorAdapter scAdapter;
    private Cursor cursor;
    EditText et, et2;
 
    @SuppressWarnings("deprecation")
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
 
        DB.etName = (EditText) findViewById(R.id.editText1);
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        // получаем курсор
        cursor = db.getAllData(arg);
        startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] {  DB.COLUMN_IMG, DB.COLUMN_TXT };
        int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvData = (ListView) findViewById(R.id.listView1);
        lvData.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData);
        
        lvData.setOnItemClickListener(new OnItemClickListener() {
            private int getSelectedItemPosition() {
                // TODO Auto-generated method stub
 
                return 0;
            }
 
            
            
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                
                //String request = db.query("SELECT lnk FROM 'DB_TABLE' WHERE 'поле1' = COLUMN_TXT");
                
                Cursor cursor = (Cursor) arg0.getItemAtPosition(arg2); // получаем курсор в позиции 2
                Intent intent = new Intent(getApplicationContext(), ImageV.class);
                intent.putExtra("ключ", cursor.getString(0)); // передаем в интент значение курсора (Среда), где 0 - первый столбец
                startActivity(intent);
                
 
//                  break;
//              case RUS:
//                  
//                  break;
//              default:
//                  break;
//              }
                            }
        });
 
 
    }
 
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.add(0, CM_EDIT_ID, 0, R.string.edit_record);
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
    }
 
    @SuppressWarnings("deprecation")
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_EDIT_ID) {
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            cursor.moveToPosition(acmi.position);
            id_col = cursor.getInt(cursor.getColumnIndex(DB.COLUMN_ID));
 
            showDialog(IDD_EDIT);
            cursor.requery();
             return true;
 
        }
 
        if (item.getItemId() == CM_DELETE_ID) {
            // получаем из пункта контекстного меню данные по пункту списка
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            // извлекаем id записи и удаляем соответствующую запись в БД
            db.delRec(acmi.id);
            // обновляем курсор
            cursor.requery();
            Log.d(TAG, "Удалено");
             return true;
        }
        return super.onContextItemSelected(item);
    }
 
    protected void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
 
    @SuppressWarnings("deprecation")
    protected void onPrepareDialog(int id, Dialog dialog) {
        super.onPrepareDialog(id, dialog);
 
        // removeDialog(id);
    }
 
    protected Dialog onCreateDialog(int id) {
 
        switch (id) {
        case IDD_EDIT:
            LayoutInflater inflater = LayoutInflater.from(this);
 
            View root = inflater.inflate(R.layout.dial, null);
            final EditText textName = (EditText) root.findViewById(R.id.name);
 
            textName.setText(cursor.getString(2));
 
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setView(root);
            builder.setTitle(R.string.title_edit);
            builder.setPositiveButton("Ок",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            String name = textName.getText().toString();
 
                            Toast toast = Toast.makeText(
                                    getApplicationContext(), name,
                                    Toast.LENGTH_SHORT);
                            toast.show();
 
                            db.updRec(id_col, name);
                            // db.insert(DB.DB_TABLE, null, cv);
                            // Cursor c = db.query("mytable", null, null, null,
                            // null, null, null);
 
                            dialog.cancel();
                            cursor.requery();
                        }
 
                    });
            builder.setNegativeButton("Отмена",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
 
                            dialog.cancel();
                            cursor.requery();
                        }
                    });
 
            builder.setCancelable(false);
            removeDialog(id);
            return builder.create();
        default:
            return null;
        
        }
        
    }
}
ImageV.class
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
package com.cribactivity;
 
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ImageView;
 
 
public class ImageV extends Activity {
    
    //PhotoViewAttacher mAttacher;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image);
        
        ImageView imview = (ImageView)findViewById(R.id.imageView1);
        Intent intent = getIntent();
        
        String FilePath = intent.getData().getPath();
        imview.setImageDrawable(Drawable.createFromPath(FilePath));
    }
}
DB.java
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package com.cribactivity;
 
 
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.widget.EditText;
 
public class DB {
    public static final Uri CONTENT_URI = Uri.parse(
            "content://com.samples.dbcontacts.contactprovider/contact");
      private static final String DB_NAME = "mydb";
      private static final int DB_VERSION = 1;
      public static final String DB_TABLE = "mytab";
      public static final String DB_TABLE2 = "mytab2";
     
      public static final String COLUMN_ID = "_id";
      public static final String COLUMN_IMG = "img";
      public static final String COLUMN_TXT = "txt";
      public static final String COLUMN_LNK = "lnk";
      
      public static final String COLUMN_ID2 = "_id";
        public static final String COLUMN_IMG2 = "img";
        public static final String COLUMN_TXT2 = "txt";
      
      public static EditText etName=null;
     
      private static final String DB_CREATE =
                "create table " + DB_TABLE + "(" +
                  COLUMN_ID + " integer primary key autoincrement, " +
                  COLUMN_IMG + " integer, " +
                  COLUMN_TXT + " text, " +
                  COLUMN_LNK + " text" +
                ");";
          
      
        
        private static final String DB_CREATE2 =
                "create table " + DB_TABLE2 + "(" +
                  COLUMN_ID2 + " integer primary key autoincrement, " +
                  COLUMN_IMG2 + " integer, " +
                  COLUMN_TXT2 + " text" +
                ");";
      private final Context mCtx;
     
     
      private DBHelper mDBHelper;
      private SQLiteDatabase mDB;
     
      public DB(Context ctx) {
        mCtx = ctx;
      }
     
      // открыть подключение
      public void open() {
        mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
        mDB = mDBHelper.getWritableDatabase();
       
      }
     
      // закрыть подключение
      public void close() {
        if (mDBHelper!=null) mDBHelper.close();
      }
     
      // получить все данные из таблицы DB_TABLE
      public Cursor getAllData(String arg) {
        return mDB.query(DB_TABLE, null, null, null, null, null, null);
       
      }
      
      public Cursor getAllData2() {
            return mDB.query(DB_TABLE2, null, null, null, null, null, null);
            
          }
     
      // добавить запись в DB_TABLE
      public void addRec(String txt, int img, String lnk) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_IMG, img);
        cv.put(COLUMN_TXT, txt);
        cv.put(COLUMN_LNK, lnk);
        mDB.insert(DB_TABLE, null, cv);
      }
      
    // добавить запись в DB_TABLE
          public void addRec2(String txt, int img) {
            ContentValues cv = new ContentValues();
            cv.put(COLUMN_TXT2, txt);
            cv.put(COLUMN_IMG2, img);
            mDB.insert(DB_TABLE2, null, cv);
          }
      public void updRec(int id_col, String name) {
          ContentValues val=new ContentValues();
         // name = etName.getText().toString();
            
            val.put(COLUMN_TXT, name);
            
            mDB.update(DB_TABLE, val, "_id = " + id_col,null);
            //mDB.update(DB_TABLE, val, "_id="+id,null);
          }
      public void updRec2(int id_col, String name) {
          ContentValues val=new ContentValues();
         // name = etName.getText().toString();
            
            val.put(COLUMN_TXT2, name);
            
            mDB.update(DB_TABLE2, val, "_id = " + id_col,null);
            //mDB.update(DB_TABLE, val, "_id="+id,null);
          }
 
       
      // удалить запись из DB_TABLE
      public void delRec(long id) {
        mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
      }
      // удалить запись из DB_TABLE2
      public void delRec2(long id) {
        mDB.delete(DB_TABLE2, COLUMN_ID2 + " = " + id, null);
      }
      private Context getContext() {
        // TODO Auto-generated method stub
        return null;
    }
    // класс по созданию и управлению БД
      public class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context, String name, CursorFactory factory,
            int version) {
          super(context, name, factory, version);
        }
       
        // создаем и заполняем БД
        @Override
        public void onCreate(SQLiteDatabase db) {
          db.execSQL(DB_CREATE);
          db.execSQL(DB_CREATE2);
          
       
         
          ContentValues cv = new ContentValues();
          for (int i = 1; i < 5; i++) {
            cv.put(COLUMN_TXT2, "sometext " + i);
            cv.put(COLUMN_IMG2, R.drawable.andr);
            db.insert(DB_TABLE2, null, cv);
          }
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
      }
    public SQLiteDatabase getWritableDatabase() {
        // TODO Auto-generated method stub
        return null;
    }
 
    public void insert(String dbTable, Object object, ContentValues cv) {
        // TODO Auto-generated method stub
        mDB.insertOrThrow(DB_TABLE, null, cv);
    }
 
    public Cursor query(String string, Object object, Object object2,
            Object object3, Object object4, Object object5, Object object6) {
        // TODO Auto-generated method stub
        mDB.query(DB_TABLE, null, null, null, null, null, null);
        return null;
    }
    public Cursor query2(String string, Object object, Object object2,
            Object object3, Object object4, Object object5, Object object6) {
        // TODO Auto-generated method stub
        mDB.query(DB_TABLE2, null, null, null, null, null, null);
        return null;
    }
    
    }
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
24.02.2015, 13:17 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
String FilePath = intent.getData().getPath(); // Это что?
String FilePath = intent.getString("ключ", "");; // Надо так
1
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
24.02.2015, 16:00  [ТС] #13
Rube,

ну т.е. получается что в моем случае SQL-запросы не нужны?

Это что?
а х... его знает... убрал и поставил getString()

заработало, но еще некий затык, когда в приложении картинка сохраняется с фотика файл имеет путь /mnt/sdcard/Cribe/Photo/file.jpg с ним все ок, открывается (сетится в ImageView).

а если мы просто выбираем файл в галерее или папке то onActivityResult и в нем
Java
1
2
  Uri uri= data.getData();
                      String FilePath2 = uri.getPath();
возвращают /external/images/media/3 или /external/images/media/30478 и т.п. и вот они то не открываются (или не сетятся) открывается активити и белый экран виден, в чем может быть причина, можно как-то конвертнуть в /mnt/и т.п. или как это делается?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
24.02.2015, 17:21 #14
Цитата Сообщение от disx Посмотреть сообщение
заработало
Ну наконец-то!
Цитата Сообщение от disx Посмотреть сообщение
и вот они то не открываются
Разрешение в Манифесте есть? Гляди в логах что пишет.
0
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 546
Записей в блоге: 1
24.02.2015, 19:14  [ТС] #15
Rube, в манифесте разрешения такие:

XML
1
2
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
три последних лога:
Using default keymap: /system/usr/keychars/qwerty.kcm.bin
Starting: Intent { cmp=com.cribactivity/.ImageV (has extras) } from pid 327
Displayed com.cribactivity/.ImageV: +414ms
ошибок никаких, просто открывается белый экран.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2015, 19:14
Привет! Вот еще темы с ответами:

Несколько фонов для приложения. Как загружать каждый по его номеру в имени файла - Программирование Android
Всем доброго вечера! Такая вот проблема: Мне нужно создать программу, которая при нажатии кнопки меняет фон. С кнопками я уже...

Как хранить результаты пользователей - Программирование Android
Доброй ночи! Хочу попробовать сделать приложение, простой тест, за правильный ответ игрок получает очки. Хочется что бы игроки заходили пол...

Как мне хранить этап игры? - Программирование Android
Доброго времени суток! Мне нужно хранить переменную, которая изначально будет равна нулю и будет запоминаться в памяти, чтобы после...

Как запускать задачу по рассписанию? Как отслеживание изменения своей БД SQLite? - Программирование Android
Есть БД SQLite, в базе есть таблица с полями о времени запуска будильника. Например, пользователь настроил будильник на 7 утра - мы...


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

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

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