package ru.perm.trubnikov.gps2sms; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ResolveInfo; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.graphics.drawable.Drawable; import android.preference.PreferenceManager; import android.view.Gravity; import android.widget.ImageButton; import android.widget.Toast; import java.util.List; class DBHelper extends SQLiteOpenHelper { private String defSmsMsg; public DBHelper(Context context) { // конструктор суперкласса super(context, "rupermtrubnikovgps2smsDB", null, 4); defSmsMsg = context.getString(R.string.default_sms_msg); } public void setMyccordName(int id, String name) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("name", name); db.update("mycoords", cv, "_id = ?", new String[]{Integer.toString(id)}); db.close(); } public String getMyccordName(int id) { SQLiteDatabase db = this.getWritableDatabase(); Cursor c = db.query("mycoords", null, "_id=" + id, null, null, null, null); String res = ""; if (c.moveToFirst()) { int idx = c.getColumnIndex("name"); res = c.getString(idx); } c.close(); db.close(); return res; } public void deleteMyccord(int id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete("mycoords", "_id = " + id, null); db.close(); } public String getSlot(int id, String col) { SQLiteDatabase db = this.getWritableDatabase(); Cursor c = db.query("slots", null, "_id=" + id, null, null, null, null); String res = ""; if (c.moveToFirst()) { int idx = c.getColumnIndex(col); res = c.getString(idx); } c.close(); db.close(); return res; } public void setSlot(int id, String name, String phone) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("phone", phone); // Log.d("gps", "save! " + name + " " + phone + " " + id); db.update("slots", cv, "_id = ?", new String[]{Integer.toString(id)}); db.close(); } public void insertMyCoord(String name, String coord) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.clear(); cv.put("name", name); cv.put("coord", coord); // Log.d("gps", "save! " + name + " " + phone + " " + id); db.insert("mycoords", null, cv); db.close(); } public static void updateFavIcon(Context context, ImageButton btn) { try { SharedPreferences localPrefs = PreferenceManager.getDefaultSharedPreferences(context); String act = localPrefs.getString("prefFavAct", ""); if (act.equalsIgnoreCase("")) { return; } Intent icon_intent = new Intent(android.content.Intent.ACTION_SEND); icon_intent.setType("text/plain"); List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(icon_intent, 0); if (!resInfo.isEmpty()) { for (ResolveInfo info : resInfo) { if (info.activityInfo.name.toLowerCase().equalsIgnoreCase(act)) { Drawable icon = info.activityInfo.loadIcon(context.getPackageManager()); btn.setImageDrawable(icon); break; } } } } catch (Exception e) { // } } public static int determineTheme(Context context) { SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); switch (sharedPrefs.getString("prefAppTheme", "1")) { // determineAccendcolor актуализировать вместе с этим методом! case "1": return R.style.AppBaseThemeDark; case "2": return R.style.AppBaseThemeLight; case "3": return R.style.AppThemeYellow; case "4": return R.style.AppThemePink; case "5": return R.style.AppThemeTeal; case "6": return R.style.AppThemeGrey; default: return R.style.AppBaseThemeDark; } } public static int determineAccendcolor(Context context) { SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); switch (sharedPrefs.getString("prefAppTheme", "1")) { case "1": return context.getResources().getColor(R.color.accent_dt); case "2": return context.getResources().getColor(R.color.accent_lt); case "3": return context.getResources().getColor(R.color.accent_yellow); case "4": return context.getResources().getColor(R.color.accent_pink); case "5": return context.getResources().getColor(R.color.accent_teal); case "6": return context.getResources().getColor(R.color.accent_grey); default: return context.getResources().getColor(R.color.accent_dt); } } // Small util to show text messages public static void ShowToast(Context context, int txt, int lng) { Toast toast = Toast.makeText(context, txt, lng); toast.setGravity(Gravity.TOP, 0, 0); toast.show(); } public static void ShowToastT(Context context, String txt, int lng) { Toast toast = Toast.makeText(context, txt, lng); toast.setGravity(Gravity.TOP, 0, 0); toast.show(); } public static String getFragmentTag(int viewPagerId, int fragmentPosition) { return "android:switcher:" + viewPagerId + ":" + fragmentPosition; } public static boolean shareFav(Context context, String crds) { boolean found = false; SharedPreferences localPrefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); Intent share = new Intent(android.content.Intent.ACTION_SEND); share.setType("text/plain"); // gets the list of intents that can be loaded. List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(share, 0); if (!resInfo.isEmpty()) { for (ResolveInfo info : resInfo) { //Log.d("gps", info.activityInfo.name.toLowerCase() + " - " + pckg); if (info.activityInfo.name.toLowerCase().equalsIgnoreCase(localPrefs.getString("prefFavAct", ""))) { //|| info.activityInfo.name.toLowerCase().contains(pckg)) share.putExtra(android.content.Intent.EXTRA_SUBJECT, context.getString(R.string.share_topic)); share.putExtra(android.content.Intent.EXTRA_TEXT, crds); share.setClassName(info.activityInfo.packageName, info.activityInfo.name); //share.setComponent(new ComponentName(info.activityInfo.packageName, info.activityInfo.name)); share.setPackage(info.activityInfo.packageName); found = true; break; } } if (found) { context.startActivity(Intent.createChooser(share, "")); } } return found; } // -------------------------------------------------------------------------------------------- @Override public void onCreate(SQLiteDatabase db) { ContentValues cv = new ContentValues(); // номер телефона для отправки SMS db.execSQL("create table phone (" + "_id integer primary key," + "phone text" + ");"); // Договорились, что телефон хранится в таблице с _id=1 cv.put("_id", 1); cv.put("phone", ""); // без "+7" !!! db.insert("phone", null, cv); db.execSQL("create table contact (" + "_id integer primary key," + "contact text" + ");"); // Договорились, что хранится в таблице с _id=1 cv.clear(); cv.put("_id", 1); cv.put("contact", ""); db.insert("contact", null, cv); db.execSQL("create table msg (" + "_id integer primary key," + "msg text" + ");"); // Договорились, что хранится в таблице с _id=1 cv.clear(); cv.put("_id", 1); cv.put("msg", defSmsMsg); db.insert("msg", null, cv); Upgrade_1_to_2(db); Upgrade_2_to_3(db); Upgrade_3_to_4(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion <= 1) { Upgrade_1_to_2(db); } if (oldVersion <= 2) { Upgrade_2_to_3(db); } if (oldVersion <= 3) { Upgrade_3_to_4(db); } } public void Upgrade_1_to_2(SQLiteDatabase db) { ContentValues cv = new ContentValues(); // Появилось с БД версии 2 // таблица настроек db.execSQL("create table settings (" + "_id integer primary key autoincrement," + "param text," + "val_txt text," + "val_int integer" + ");"); cv.clear(); cv.put("param", "sendvia"); // Посылать СМС/Навител cv.put("val_txt", ""); cv.put("val_int", 1); db.insert("settings", null, cv); // Слоты контактов, plain phone - нулевой слот db.execSQL("create table slots (" + "_id integer primary key," + "name text," + "phone text" + ");"); cv.clear(); cv.put("_id", 0); cv.put("name", ""); cv.put("phone", ""); db.insert("slots", null, cv); cv.clear(); cv.put("_id", 1); cv.put("name", ""); cv.put("phone", ""); db.insert("slots", null, cv); cv.clear(); cv.put("_id", 2); cv.put("name", ""); cv.put("phone", ""); db.insert("slots", null, cv); cv.clear(); cv.put("_id", 3); cv.put("name", ""); cv.put("phone", ""); db.insert("slots", null, cv); } public void Upgrade_2_to_3(SQLiteDatabase db) { ContentValues cv = new ContentValues(); cv.clear(); cv.put("param", "keepscreen"); // Держать ли экран всегда включенным cv.put("val_txt", ""); cv.put("val_int", 1); db.insert("settings", null, cv); } public void Upgrade_3_to_4(SQLiteDatabase db) { db.execSQL("create table mycoords (" + "_id integer primary key autoincrement," + "name text," + "coord text" + ");"); } }