1
1
package com.phstudio.freetv.favorite
2
2
3
3
import android.annotation.SuppressLint
4
+ import android.app.Activity
4
5
import android.content.ContentValues
5
6
import android.content.Context
7
+ import android.content.Intent
6
8
import android.database.Cursor
7
9
import android.database.sqlite.SQLiteDatabase
8
10
import android.database.sqlite.SQLiteOpenHelper
11
+ import android.graphics.drawable.BitmapDrawable
12
+ import android.graphics.drawable.Drawable
9
13
import android.os.Environment
14
+ import android.os.Environment.getExternalStoragePublicDirectory
15
+ import android.widget.Button
16
+ import android.widget.Toast
17
+ import androidx.core.app.ActivityCompat.startActivityForResult
18
+ import com.phstudio.freetv.R
19
+ import com.squareup.picasso.Picasso
10
20
import java.io.File
11
21
import java.io.FileWriter
12
22
import java.io.IOException
@@ -27,47 +37,34 @@ class Database(context: Context, factory: SQLiteDatabase.CursorFactory?) :
27
37
28
38
companion object {
29
39
private const val DATABASE_NAME = " PH studio"
30
- private const val DATABASE_VERSION = 2
40
+ private const val DATABASE_VERSION = 3
31
41
const val TABLE_NAME = " Favorite"
32
42
const val ID_COL = " id"
33
- const val COL1 = " source"
34
- const val COL2 = " number"
35
- const val COL3 = " playlist"
36
- const val COL4 = " picture"
37
- const val COL5 = " string"
43
+ const val COL1 = " name"
44
+ const val COL2 = " logo"
45
+ const val COL3 = " url"
38
46
}
39
47
40
48
override fun onCreate (db : SQLiteDatabase ) {
41
49
val query = (" CREATE TABLE if not exists " + TABLE_NAME + " ("
42
50
+ ID_COL + " INTEGER PRIMARY KEY, " +
43
51
COL1 + " TEXT," +
44
52
COL2 + " TEXT," +
45
- COL3 + " TEXT," +
46
- COL4 + " TEXT," +
47
- COL5 + " TEXT" + " )" )
53
+ COL3 + " TEXT" + " )" )
48
54
db.execSQL(query)
49
55
}
50
56
51
57
@SuppressLint(" Recycle" , " Range" , " DiscouragedApi" )
52
58
fun getData (context : Context ): ArrayList <HashMap <String , Any >> {
53
59
val db = this .writableDatabase
54
60
val userList: ArrayList <HashMap <String , Any >> = ArrayList ()
55
- val cursor = db.rawQuery(" SELECT picture, string FROM $TABLE_NAME " , null )
61
+ val cursor = db.rawQuery(" SELECT name, logo, url FROM $TABLE_NAME " , null )
56
62
57
63
while (cursor.moveToNext()) {
58
64
val user: HashMap <String , Any > = HashMap ()
59
- val picture = (cursor.getString(cursor.getColumnIndex(COL4 )))
60
- user[" picture" ] =
61
- context.resources.getIdentifier(picture, " drawable" , context.packageName)
62
- val text = cursor.getString(cursor.getColumnIndex(COL5 ))
63
- user[" string" ] = text
64
- /* user["string"] = context.getString(
65
- context.resources.getIdentifier(
66
- text,
67
- "string",
68
- context.packageName
69
- )
70
- )*/
65
+ user[" name" ] = cursor.getString(cursor.getColumnIndex(COL1 ))
66
+ user[" logo" ] = cursor.getString(cursor.getColumnIndex(COL2 ))
67
+ user[" url" ] = cursor.getString(cursor.getColumnIndex(COL3 ))
71
68
userList.add(user)
72
69
}
73
70
cursor.close()
@@ -76,18 +73,14 @@ class Database(context: Context, factory: SQLiteDatabase.CursorFactory?) :
76
73
}
77
74
78
75
fun writeToDb (
79
- source : String ,
80
- number : String ,
81
- playlist : String ,
82
- picture : String ,
83
- string : String
76
+ name : String ,
77
+ logo : String ,
78
+ url : String ,
84
79
) {
85
80
val values = ContentValues ()
86
- values.put(COL1 , source)
87
- values.put(COL2 , number)
88
- values.put(COL3 , playlist)
89
- values.put(COL4 , picture)
90
- values.put(COL5 , string)
81
+ values.put(COL1 , name)
82
+ values.put(COL2 , logo)
83
+ values.put(COL3 , url)
91
84
92
85
val db = this .writableDatabase
93
86
db.insert(TABLE_NAME , null , values)
@@ -121,47 +114,85 @@ class Database(context: Context, factory: SQLiteDatabase.CursorFactory?) :
121
114
}
122
115
123
116
@SuppressLint(" Range" )
124
- fun exportDb (): Boolean {
117
+ fun exportDb14 (context : Context ): Boolean {
118
+ val exportDir =
119
+ getExternalStoragePublicDirectory(Environment .DIRECTORY_DOCUMENTS )
120
+ if (! exportDir.exists()) {
121
+ exportDir.mkdirs()
122
+ }
123
+ val file: File
124
+ var printWriter: PrintWriter ? = null
125
+ try {
126
+ file = File (exportDir, " Database_FREETV.csv" )
127
+ file.createNewFile()
128
+ printWriter = PrintWriter (FileWriter (file))
129
+
130
+ val db = this .readableDatabase
131
+ var id: Int
132
+ var name: String
133
+ var logo: String
134
+ var url: String
135
+
136
+ val curCSV: Cursor = db.rawQuery(" SELECT * FROM $TABLE_NAME " , null )
137
+ printWriter.println (" id,name,logo,url" )
138
+ while (curCSV.moveToNext()) {
139
+ id = curCSV.getInt(curCSV.getColumnIndex(ID_COL ))
140
+ name = curCSV.getString(curCSV.getColumnIndex(" name" ))
141
+ logo = curCSV.getString(curCSV.getColumnIndex(" logo" ))
142
+ url = curCSV.getString(curCSV.getColumnIndex(" url" ))
143
+
144
+ val record = " $id ,$name ,$logo ,$url "
145
+
146
+ printWriter.println (record)
147
+ }
148
+ curCSV.close()
149
+ db.close()
150
+ } catch (e: IOException ) {
151
+ return false
152
+ } finally {
153
+ printWriter?.close()
154
+ }
155
+ return true
156
+ }
157
+
158
+ @SuppressLint(" Range" )
159
+ fun exportDb (context : Context ): Boolean {
125
160
val state = Environment .getExternalStorageState()
126
161
if (Environment .MEDIA_MOUNTED != state) {
127
162
return false
128
163
} else {
129
- val exportDir =
130
- Environment .getExternalStoragePublicDirectory(Environment .DIRECTORY_DOWNLOADS )
131
- if (! exportDir.exists()) {
132
- exportDir.mkdirs()
133
- }
164
+ val fileDir = context.getExternalFilesDir(null )
165
+
134
166
val file: File
135
167
var printWriter: PrintWriter ? = null
136
168
try {
137
- file = File (exportDir , " Database_FREETV.csv" )
169
+ file = File (fileDir , " Database_FREETV.csv" )
138
170
file.createNewFile()
139
171
printWriter = PrintWriter (FileWriter (file))
140
172
141
173
val db = this .readableDatabase
142
174
var id: Int
143
- var source: String
144
- var number: String
145
- var playlist: String
146
- var picture: String
147
- var string: String
175
+ var name: String
176
+ var logo: String
177
+ var url: String
148
178
149
179
val curCSV: Cursor = db.rawQuery(" SELECT * FROM $TABLE_NAME " , null )
150
- printWriter.println (" id,source,number,playlist,picture,string " )
180
+ printWriter.println (" id,name,logo,url " )
151
181
while (curCSV.moveToNext()) {
152
182
id = curCSV.getInt(curCSV.getColumnIndex(ID_COL ))
153
- source = curCSV.getString(curCSV.getColumnIndex(" source" ))
154
- number = curCSV.getString(curCSV.getColumnIndex(" number" ))
155
- playlist = curCSV.getString(curCSV.getColumnIndex(" playlist" ))
156
- picture = curCSV.getString(curCSV.getColumnIndex(" picture" ))
157
- string = curCSV.getString(curCSV.getColumnIndex(" string" ))
183
+ name = curCSV.getString(curCSV.getColumnIndex(" name" ))
184
+ logo = curCSV.getString(curCSV.getColumnIndex(" logo" ))
185
+ url = curCSV.getString(curCSV.getColumnIndex(" url" ))
158
186
159
- val record = " $id ,$source , $number , $playlist , $picture , $string "
187
+ val record = " $id ,$name , $logo , $url "
160
188
161
189
printWriter.println (record)
162
190
}
163
191
curCSV.close()
164
192
db.close()
193
+ Toast .makeText(context, context.getString(R .string.saveFolder), Toast .LENGTH_SHORT ).show()
194
+ Toast .makeText(context, file.absolutePath, Toast .LENGTH_LONG ).show()
195
+
165
196
} catch (e: IOException ) {
166
197
return false
167
198
} finally {
0 commit comments