Offline HTML Reader for Android
Revision | 8774374a8b87d5db48cecb2344e15851e9dc1a82 (tree) |
---|---|
Zeit | 2013-05-11 21:04:37 |
Autor | Kana Koda <kodakana@user...> |
Commiter | Kana Koda |
開くファイルがないときに表示するデフォルトのページを追加。内部的修正。
@@ -4,6 +4,5 @@ | ||
4 | 4 | <classpathentry kind="src" path="gen"/> |
5 | 5 | <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
6 | 6 | <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
7 | - <classpathentry exported="true" kind="lib" path="/home/kodakana/Documents/Workspace/Kigo/libs/android-support-v4.jar"/> | |
8 | 7 | <classpathentry kind="output" path="bin/classes"/> |
9 | 8 | </classpath> |
@@ -0,0 +1,6 @@ | ||
1 | +[Dolphin] | |
2 | +Timestamp=2013,5,11,20,23,13 | |
3 | +Version=3 | |
4 | + | |
5 | +[Settings] | |
6 | +HiddenFilesShown=true |
@@ -1,8 +1,8 @@ | ||
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
3 | 3 | package="org.pulpdust.unnetbrowser" |
4 | - android:versionCode="4" | |
5 | - android:versionName="0.8" | |
4 | + android:versionCode="5" | |
5 | + android:versionName="0.82" | |
6 | 6 | android:installLocation="auto" > |
7 | 7 | |
8 | 8 | <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" /> |
@@ -22,6 +22,7 @@ OI File Manager が必要です。OI File Manager がなくても、任意のフ | ||
22 | 22 | * ハードキーボードから各種機能を操作可能です。 |
23 | 23 | * <(前へ)ボタンを長押しすると index ファイルを表示(有る場合)するか、HTML ファイル一覧を表示します。 |
24 | 24 | * >(次へ)ボタンを長押しすると履歴を進みます。 |
25 | + * PgUp/PgDn ボタンを長押しすると、アクションバーの表示を一時的に切り替えることができます(Android 3.0 以降)。 | |
25 | 26 | |
26 | 27 | キーボードショートカット |
27 | 28 | --------------------- |
@@ -1 +0,0 @@ | ||
1 | -<html><body><h1>It works!</h1></body></html> | |
\ No newline at end of file |
@@ -0,0 +1,16 @@ | ||
1 | +<html> | |
2 | +<head> | |
3 | +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |
4 | +<title>Unnet Browser</title> | |
5 | +</head> | |
6 | +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |
7 | +<meta http-equiv="Content-Style-Type" content="text/css" /> | |
8 | +<title>Unnet Browser</title> | |
9 | +<link rel="stylesheet" type="text/css" href="style.css" /> | |
10 | +</head> | |
11 | +<body> | |
12 | +<h1>Seeing this instead of the localpage you expected?</h1> | |
13 | +<div class="mural"><img src="20121121222807.png" alt="" /></div> | |
14 | +<p>Unnet Browser is an offline HTML reader. To open the HTML file stored in your memory card, Select it from any file manager, Or after installing the <a href="market://search?q=pname:org.openintents.filemanager">OI File Manager</a>, open the menu on this screen, please press the [Open...].</p> | |
15 | +</body> | |
16 | +</html> | |
\ No newline at end of file |
@@ -0,0 +1,13 @@ | ||
1 | +<html> | |
2 | +<head> | |
3 | +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |
4 | +<meta http-equiv="Content-Style-Type" content="text/css" /> | |
5 | +<title>Unnet Browser</title> | |
6 | +<link rel="stylesheet" type="text/css" href="style.css" /> | |
7 | +</head> | |
8 | +<body> | |
9 | +<h1>あなたの予想に反して、このページが見えているでしょうか?</h1> | |
10 | +<div class="mural"><img src="20121121222807.png" alt="" /></div> | |
11 | +<p>Unnet Browser はオフライン HTML リーダです。あなたのメモリカードに保存されている HTML ファイルを開くには、任意のファイルマネージャからそれを選択するか、<a href="market://search?q=pname:org.openintents.filemanager">OI File Manager</a> をインストールしてから、この画面でメニューを開き、[開く…]を押してください。</p> | |
12 | +</body> | |
13 | +</html> | |
\ No newline at end of file |
@@ -0,0 +1,6 @@ | ||
1 | +h1, .mural { | |
2 | + text-align: center; | |
3 | +} | |
4 | +img { | |
5 | + width: 50%; | |
6 | +} |
@@ -1,8 +1,8 @@ | ||
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
3 | 3 | package="org.pulpdust.unnetbrowser" |
4 | - android:versionCode="4" | |
5 | - android:versionName="0.8" | |
4 | + android:versionCode="5" | |
5 | + android:versionName="0.82" | |
6 | 6 | android:installLocation="auto" > |
7 | 7 | |
8 | 8 | <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14" /> |
@@ -73,7 +73,6 @@ public final class R { | ||
73 | 73 | public static final int match=0x7f06001c; |
74 | 74 | public static final int next=0x7f06001e; |
75 | 75 | public static final int open=0x7f06000b; |
76 | - public static final int perf_actionbar_desc=0x7f060041; | |
77 | 76 | public static final int pgdn=0x7f060020; |
78 | 77 | public static final int pgup=0x7f06001f; |
79 | 78 | public static final int pref_actionbar=0x7f06002c; |
@@ -46,7 +46,7 @@ | ||
46 | 46 | <string name="pref_wide">描画領域を拡げる</string> |
47 | 47 | <string name="pref_title">タイトルバーを隠す</string> |
48 | 48 | <string name="pref_actionbar">アクションバーを隠す</string> |
49 | - <string name="perf_actionbar_desc">この設定は画面が再構築されるときに完全に反映されます。</string> | |
49 | + <string name="pref_actionbar_desc">この設定は画面が再構築されるときに完全に反映されます。</string> | |
50 | 50 | <string name="pref_title_desc">この設定は画面が再構築されるときに反映されます。</string> |
51 | 51 | <string name="pref_restart">自動的に開き直す</string> |
52 | 52 | <string name="pref_restart_desc">設定を反映するために必要な場合に自動的に再起動するかどうか。</string> |
@@ -2,15 +2,14 @@ package org.pulpdust.unnetbrowser; | ||
2 | 2 | |
3 | 3 | import java.io.File; |
4 | 4 | import java.io.UnsupportedEncodingException; |
5 | +import java.net.URLDecoder; | |
5 | 6 | import java.util.Arrays; |
6 | 7 | import java.util.Collections; |
7 | 8 | import java.util.List; |
9 | +import java.util.Locale; | |
8 | 10 | import java.util.regex.Matcher; |
9 | 11 | import java.util.regex.Pattern; |
10 | -import java.net.URLDecoder; | |
11 | -import java.lang.Math; | |
12 | 12 | |
13 | -import android.app.Activity; | |
14 | 13 | import android.app.AlertDialog; |
15 | 14 | import android.app.Dialog; |
16 | 15 | import android.content.ActivityNotFoundException; |
@@ -19,47 +18,45 @@ import android.content.DialogInterface; | ||
19 | 18 | import android.content.Intent; |
20 | 19 | import android.content.SharedPreferences; |
21 | 20 | import android.content.res.Configuration; |
21 | +import android.graphics.Bitmap; | |
22 | +import android.support.v4.app.DialogFragment; | |
23 | +import android.support.v4.app.FragmentActivity; | |
24 | +import android.support.v4.app.FragmentManager; | |
22 | 25 | import android.net.Uri; |
23 | 26 | import android.os.Build; |
24 | 27 | import android.os.Bundle; |
25 | 28 | import android.os.Environment; |
26 | -import android.support.v4.app.DialogFragment; | |
27 | -import android.support.v4.app.FragmentActivity; | |
28 | -import android.support.v4.app.FragmentManager; | |
29 | 29 | import android.preference.PreferenceManager; |
30 | 30 | import android.text.Editable; |
31 | 31 | import android.text.TextWatcher; |
32 | -//import android.util.DisplayMetrics; | |
33 | 32 | import android.util.Log; |
34 | -//import android.view.ContextMenu; | |
35 | -//import android.view.ContextMenu.ContextMenuInfo; | |
36 | 33 | import android.view.Gravity; |
37 | 34 | import android.view.KeyEvent; |
38 | -import android.view.LayoutInflater; | |
39 | 35 | import android.view.Menu; |
40 | 36 | import android.view.MenuItem; |
41 | -//import android.view.SubMenu; | |
42 | -import android.view.WindowManager; | |
43 | -import android.view.View.OnKeyListener; | |
44 | -import android.view.ViewGroup; | |
45 | -//import android.view.WindowManager.LayoutParams; | |
46 | -//import android.view.MotionEvent; | |
47 | 37 | import android.view.View; |
48 | 38 | import android.view.View.OnClickListener; |
39 | +import android.view.View.OnKeyListener; | |
49 | 40 | import android.view.View.OnLongClickListener; |
50 | -//import android.view.View.OnTouchListener; | |
51 | 41 | import android.view.Window; |
42 | +import android.view.WindowManager; | |
52 | 43 | import android.webkit.CookieManager; |
44 | +import android.webkit.MimeTypeMap; | |
53 | 45 | import android.webkit.WebSettings; |
54 | 46 | import android.webkit.WebView; |
55 | 47 | import android.webkit.WebViewClient; |
56 | -import android.webkit.MimeTypeMap; | |
57 | -//import android.widget.AdapterView.AdapterContextMenuInfo; | |
58 | 48 | import android.widget.Button; |
59 | 49 | import android.widget.EditText; |
60 | 50 | import android.widget.TextView; |
61 | 51 | import android.widget.Toast; |
62 | -import android.graphics.Bitmap; | |
52 | +//import android.util.DisplayMetrics; | |
53 | +//import android.view.ContextMenu; | |
54 | +//import android.view.ContextMenu.ContextMenuInfo; | |
55 | +//import android.view.SubMenu; | |
56 | +//import android.view.WindowManager.LayoutParams; | |
57 | +//import android.view.MotionEvent; | |
58 | +//import android.view.View.OnTouchListener; | |
59 | +//import android.widget.AdapterView.AdapterContextMenuInfo; | |
63 | 60 | |
64 | 61 | public class UnnetBrowserActivity extends FragmentActivity { |
65 | 62 | final static String TAG = "UnnetBrowserActivity"; |
@@ -199,38 +196,56 @@ public class UnnetBrowserActivity extends FragmentActivity { | ||
199 | 196 | File cur = new File(url); |
200 | 197 | Matcher typem = accept.matcher(url); |
201 | 198 | if (typem.matches()){ |
202 | - String cdir = cur.getParent(); | |
203 | - String cfil = cur.getName(); | |
204 | - if (cdir == null){ | |
205 | - cdir = "/"; | |
206 | - } | |
207 | - if (cdir.startsWith("file:")){ | |
208 | - cdir = cdir.substring(5); | |
209 | - } | |
210 | - if (dir_s != null && !cdir.equals(dir_s)){ | |
211 | - dir_prev = dir_s; | |
212 | - } | |
213 | - dir_s = cdir; | |
214 | - if (exDir()){ | |
215 | - pnom = curIndex(cfil); | |
216 | - loadFiles(true, getApplication(), getSupportFragmentManager()); | |
217 | - } | |
199 | + String cdir = cur.getParent(); | |
200 | + String cfil = cur.getName(); | |
201 | + if (cdir == null){ | |
202 | + cdir = "/"; | |
203 | + } | |
204 | + if (cdir.startsWith("file:")){ | |
205 | + cdir = cdir.substring(5); | |
206 | + } | |
207 | + if (dir_s != null && !cdir.equals(dir_s)){ | |
208 | + dir_prev = dir_s; | |
209 | + } | |
210 | + dir_s = cdir; | |
211 | + if (exDir()){ | |
212 | + pnom = curIndex(cfil); | |
213 | + loadFiles(true, getApplication(), getSupportFragmentManager()); | |
214 | + } else { | |
215 | + doDefault(); | |
216 | + } | |
218 | 217 | } else { |
219 | 218 | throwIntent(url); |
220 | 219 | } |
221 | 220 | } else if (dir_s != ""){ |
222 | 221 | if (exDir()){ |
223 | 222 | loadFiles(true, getApplication(), getSupportFragmentManager()); |
223 | + } else { | |
224 | + doDefault(); | |
224 | 225 | } |
225 | 226 | } else { |
226 | -// webview.loadUrl("file:///android_asset/index.html"); | |
227 | + doDefault(); | |
227 | 228 | } |
228 | 229 | } |
230 | + public void doDefault(){ | |
231 | + String where = getLocale(); | |
232 | + webview.loadUrl("file:///android_asset/index_"+where+".html"); | |
233 | + } | |
229 | 234 | @Override |
230 | 235 | public void onStart(){ |
231 | 236 | super.onStart(); |
232 | 237 | |
233 | 238 | } |
239 | + public String getLocale(){ | |
240 | + Locale lc = Locale.getDefault(); | |
241 | + String ls; | |
242 | + if (lc.equals(Locale.JAPAN)){ | |
243 | + ls = "ja"; | |
244 | + } else { | |
245 | + ls = "c"; | |
246 | + } | |
247 | + return ls; | |
248 | + } | |
234 | 249 | public void toHideActionBar(){ |
235 | 250 | forHoneycomb.hideActionBar(this); |
236 | 251 | } |
@@ -1232,6 +1247,8 @@ public class UnnetBrowserActivity extends FragmentActivity { | ||
1232 | 1247 | if (exDir()){ |
1233 | 1248 | pnom = curIndex(cfil); |
1234 | 1249 | loadFiles(true, getApplication(), getSupportFragmentManager()); |
1250 | + } else { | |
1251 | + doDefault(); | |
1235 | 1252 | } |
1236 | 1253 | } else { |
1237 | 1254 | dir_s = dir_prev; |