Fix:android:Use sharedPreferences for storing settings
authorrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Wed, 31 Aug 2011 21:45:15 +0000 (21:45 +0000)
committerrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Wed, 31 Aug 2011 21:45:15 +0000 (21:45 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4741 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/android/src/org/navitproject/navit/Navit.java

index a6e2a62..8b30c3d 100644 (file)
@@ -37,6 +37,7 @@ import android.app.PendingIntent;
 import android.content.Context;\r
 import android.content.DialogInterface;\r
 import android.content.Intent;\r
+import android.content.SharedPreferences;\r
 import android.content.res.Resources;\r
 import android.media.AudioManager;\r
 import android.net.Uri;\r
@@ -98,7 +99,8 @@ public class Navit extends Activity
        static final String              NAVIT_DATA_DIR                 = "/data/data/org.navitproject.navit";\r
        static final String              NAVIT_DATA_SHARE_DIR           = NAVIT_DATA_DIR + "/share";\r
        static final String              FIRST_STARTUP_FILE             = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt";\r
-\r
+       public static final String       NAVIT_PREFS                    = "NavitPrefs";\r
+       \r
        public static String get_text(String in)\r
        {\r
                return NavitTextTranslations.get_text(in);\r
@@ -196,6 +198,57 @@ public class Navit extends Activity
                return true;\r
        }\r
 \r
+       private void showInfos()\r
+       {\r
+               SharedPreferences settings = getSharedPreferences(NAVIT_PREFS, MODE_PRIVATE);\r
+               boolean firstStart = settings.getBoolean("firstStart", true);\r
+               \r
+               \r
+               if (firstStart)\r
+               {\r
+                       AlertDialog.Builder infobox = new AlertDialog.Builder(this);\r
+                       infobox.setTitle(NavitTextTranslations.INFO_BOX_TITLE); // TRANS\r
+                       infobox.setCancelable(false);\r
+                       final TextView message = new TextView(this);\r
+                       message.setFadingEdgeLength(20);\r
+                       message.setVerticalFadingEdgeEnabled(true);\r
+                       // message.setVerticalScrollBarEnabled(true);\r
+                       RelativeLayout.LayoutParams rlp =\r
+                               new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,\r
+                                       RelativeLayout.LayoutParams.FILL_PARENT);\r
+       \r
+                       message.setLayoutParams(rlp);\r
+                       final SpannableString s = new SpannableString(NavitTextTranslations.INFO_BOX_TEXT); // TRANS\r
+                       Linkify.addLinks(s, Linkify.WEB_URLS);\r
+                       message.setText(s);\r
+                       message.setMovementMethod(LinkMovementMethod.getInstance());\r
+                       infobox.setView(message);\r
+       \r
+                       // TRANS\r
+                       infobox.setPositiveButton(Navit.get_text("Ok"), new DialogInterface.OnClickListener() {\r
+                               public void onClick(DialogInterface arg0, int arg1) {\r
+                                       Log.e("Navit", "Ok, user saw the infobox");\r
+                               }\r
+                       });\r
+       \r
+                       \r
+                       // TRANS\r
+                       infobox.setNeutralButton(NavitTextTranslations.NAVIT_JAVA_MENU_MOREINFO, new DialogInterface.OnClickListener() {\r
+                               public void onClick(DialogInterface arg0, int arg1) {\r
+                                       Log.e("Navit", "user wants more info, show the website");\r
+                                       String url = "http://wiki.navit-project.org/index.php/Navit_on_Android";\r
+                                       Intent i = new Intent(Intent.ACTION_VIEW);\r
+                                       i.setData(Uri.parse(url));\r
+                                       startActivity(i);\r
+                               }\r
+                       });\r
+                       infobox.show();\r
+                       SharedPreferences.Editor edit_settings = settings.edit();\r
+                       edit_settings.putBoolean("firstStart", false);\r
+                       edit_settings.commit();\r
+               }\r
+       }\r
+\r
        /** Called when the activity is first created. */\r
        @Override\r
        public void onCreate(Bundle savedInstanceState)\r
@@ -256,7 +309,7 @@ public class Navit extends Activity
                File navit_maps_dir = new File(MAP_FILENAME_PATH);\r
                navit_maps_dir.mkdirs();\r
 \r
-               // make sure the share dir exists, otherwise the infobox will not show\r
+               // make sure the share dir exists\r
                File navit_data_share_dir = new File(NAVIT_DATA_SHARE_DIR);\r
                navit_data_share_dir.mkdirs();\r
 \r
@@ -302,77 +355,6 @@ public class Navit extends Activity
                        NavitTextTranslations.NAVIT_JAVA_OVERLAY_BUBBLE_DRIVEHERE = NavitTextTranslations.NAVIT_JAVA_OVERLAY_BUBBLE_DRIVEHERE_nl;\r
                }\r
 \r
-               /*\r
-                * show info box for first time users\r
-                */\r
-               AlertDialog.Builder infobox = new AlertDialog.Builder(this);\r
-               infobox.setTitle(NavitTextTranslations.INFO_BOX_TITLE); //TRANS\r
-               infobox.setCancelable(false);\r
-               final TextView message = new TextView(this);\r
-               message.setFadingEdgeLength(20);\r
-               message.setVerticalFadingEdgeEnabled(true);\r
-               //message.setVerticalScrollBarEnabled(true);\r
-               RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(\r
-                               RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);\r
-\r
-               // margins seem not to work, hmm strange\r
-               // so add a " " at start of every line. well whadda you gonna do ...\r
-               //rlp.leftMargin = 8; -> we use "m" string\r
-\r
-               message.setLayoutParams(rlp);\r
-               final SpannableString s = new SpannableString(NavitTextTranslations.INFO_BOX_TEXT); //TRANS\r
-               Linkify.addLinks(s, Linkify.WEB_URLS);\r
-               message.setText(s);\r
-               message.setMovementMethod(LinkMovementMethod.getInstance());\r
-               infobox.setView(message);\r
-\r
-               //TRANS\r
-               infobox.setPositiveButton(Navit.get_text("Ok"), new DialogInterface.OnClickListener()\r
-               {\r
-                       public void onClick(DialogInterface arg0, int arg1)\r
-                       {\r
-                               Log.e("Navit", "Ok, user saw the infobox");\r
-                       }\r
-               });\r
-\r
-               //TRANS\r
-               infobox.setNeutralButton(NavitTextTranslations.NAVIT_JAVA_MENU_MOREINFO,\r
-                               new DialogInterface.OnClickListener()\r
-                               {\r
-                                       public void onClick(DialogInterface arg0, int arg1)\r
-                                       {\r
-                                               Log.e("Navit", "user wants more info, show the website");\r
-                                               String url = "http://wiki.navit-project.org/index.php/Navit_on_Android";\r
-                                               Intent i = new Intent(Intent.ACTION_VIEW);\r
-                                               i.setData(Uri.parse(url));\r
-                                               startActivity(i);\r
-                                       }\r
-                               });\r
-\r
-               File navit_first_startup = new File(FIRST_STARTUP_FILE);\r
-               // if file does NOT exist, show the info box\r
-               if (!navit_first_startup.exists())\r
-               {\r
-                       FileOutputStream fos_temp;\r
-                       try\r
-                       {\r
-                               fos_temp = new FileOutputStream(navit_first_startup);\r
-                               fos_temp.write((int) 65); // just write an "A" to the file, but really doesnt matter\r
-                               fos_temp.flush();\r
-                               fos_temp.close();\r
-                               infobox.show();\r
-                       }\r
-                       catch (Exception e)\r
-                       {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-               /*\r
-                * show info box for first time users\r
-                */\r
-               \r
-               // make handler statically available for use in "msg_to_msg_handler"\r
-\r
                Display display_ = getWindowManager().getDefaultDisplay();\r
                int width_ = display_.getWidth();\r
                int height_ = display_.getHeight();\r
@@ -419,23 +401,11 @@ public class Navit extends Activity
                        Log.e("Navit", "Failed to extract navit.xml for " + my_display_density);\r
                }\r
 \r
-               // --> dont use!! NavitMain(this, langu, android.os.Build.VERSION.SDK_INT);\r
-               Log.e("Navit", "android.os.Build.VERSION.SDK_INT="\r
-                               + Integer.valueOf(android.os.Build.VERSION.SDK));\r
+               // --> dont use android.os.Build.VERSION.SDK_INT, needs API >= 4\r
+               Log.e("Navit", "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK));\r
                NavitMain(this, langu, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density, NAVIT_DATA_DIR+"/bin/navit");\r
-               // CAUTION: don't use android.os.Build.VERSION.SDK_INT if <uses-sdk android:minSdkVersion="3" />\r
-               // You will get exception on all devices with Android 1.5 and lower\r
-               // because Build.VERSION.SDK_INT is since SDK 4 (Donut 1.6)\r
-\r
-               //              Platform Version   API Level\r
-               //              Android 2.2       8\r
-               //              Android 2.1       7\r
-               //              Android 2.0.1     6\r
-               //              Android 2.0       5\r
-               //              Android 1.6       4\r
-               //              Android 1.5       3\r
-               //              Android 1.1       2\r
-               //              Android 1.0       1\r
+\r
+               showInfos();\r
 \r
                Navit.mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);\r
 \r