<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Android on Hiroyuki Abeの日記</title>
		<link>https://d.tflare.com/categories/android/</link>
		<description>Recent content in Android on Hiroyuki Abeの日記</description>
		<generator>Hugo</generator>
		<language>ja-jp</language>
		
		
		
			<copyright>Copyright (c) 2006 - 2026, Hiroyuki Abe</copyright>
		
		
			<lastBuildDate>Sat, 26 Jan 2013 06:17:08 +0000</lastBuildDate>
		
			<atom:link href="https://d.tflare.com/categories/android/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>MhtViewerのintent-filterの現状</title>
				<link>https://d.tflare.com/2013/01/26/151708/</link>
				<pubDate>Sat, 26 Jan 2013 06:17:08 +0000</pubDate>
				<guid>https://d.tflare.com/2013/01/26/151708/</guid>
				<description>&lt;p&gt;AndroidにMhtViewerをインストールするとファイルマネージャでHTMLファイルを選択した際に &lt;br&gt;&#xA;MhtViewerが選択肢に現れる事がある。 &lt;br&gt;&#xA;これについて現在わかっている情報をまとめる。&lt;/p&gt;&#xA;&lt;p&gt;MhtViewerのintent-filterは以下としている。&#xA;&lt;code&gt;AndroidにMhtViewerをインストールするとファイルマネージャでHTMLファイルを選択した際に     MhtViewerが選択肢に現れる事がある。     これについて現在わかっている情報をまとめる。   MhtViewerのintent-filterは以下としている。 &lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;まずandroid:pathPatternのみの設定で良いのではないかと思うかもしれないが &lt;br&gt;&#xA;android:pathPatternでは反応しないファイルマネージャがあるためandroid:mimeTypeも設定している。&lt;br&gt;&#xA;android:mimeType=”message/rfc822″だけではなく、android:mimeType=”text/html”も対象にしている。&lt;/p&gt;&#xA;&lt;p&gt;これはファイルマネージャによっては、MHTML形式のファイルをmimeType=”text/html”と誤判定する場合があるためである。&lt;/p&gt;&#xA;&lt;p&gt;上記のため、現状では上記設定としている。&lt;/p&gt;&#xA;&lt;p&gt;ファイルマネージャがファイルの判定を拡張子で行い、mimeType=”message/rfc822と判定してくれれば問題はない。&lt;br&gt;&#xA;しかしファイルマネージャがファイルの中身でファイルを判定する場合、MHTML形式はHTMLファイルとの区別が難しいファイルもあるため誤判定によりandroid:mimeType=”text/html”と解釈されるケースがそれなりに存在する。&lt;/p&gt;&#xA;&lt;p&gt;それを救うために上記intent-filterの設定にしている。&lt;br&gt;&#xA;とりあえず、上記設定としているが、もっと良い方はないのだろうか。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Androidで外部ストレージのパスを取得する方法</title>
				<link>https://d.tflare.com/2013/01/04/125653/</link>
				<pubDate>Fri, 04 Jan 2013 03:56:53 +0000</pubDate>
				<guid>https://d.tflare.com/2013/01/04/125653/</guid>
				<description>&lt;p&gt;Androidで外部ストレージのパスを取得する方法&lt;/p&gt;&#xA;&lt;p&gt;現在Androidで外部ストレージのパスを取得するAPIが存在しない。&lt;/p&gt;&#xA;&lt;p&gt;Androidでストレージのパスを取得する&lt;a href=&#34;http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()&#34;&gt;Environment.getExternalStorageDirectory()&lt;/a&gt;は、 内部ストレージが存在する場合、名前に反して内部ストレージのパスを返す。（これは、既存プログラムの互換性を考えた時に、必要な考慮と思われる。）&lt;/p&gt;&#xA;&lt;p&gt;そのため、以下を参考にして/system/etc/vold/fstabを使用する方法で取得することにした。&lt;/p&gt;&#xA;&lt;p&gt;（参考&lt;a href=&#34;http://inujirushi123.blog.fc2.com/blog-entry-93.html&#34;&gt;http://inujirushi123.blog.fc2.com/blog-entry-93.html&lt;/a&gt;）&lt;/p&gt;&#xA;&lt;p&gt;Xperia VLの/system/etc/vold.fstabを確認したところ&lt;/p&gt;&#xA;&lt;p&gt;内部ストレージがfuse_mountで定義されていたため、追加している。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt; List &lt;span style=&#34;color:#a6e22e&#34;&gt;getStoragePaths&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        List mountList &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; ArrayList();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Scanner scanner &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            scanner &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Scanner(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; FileInputStream(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; File(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/system/etc/vold.fstab&amp;#34;&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; (scanner.&lt;span style=&#34;color:#a6e22e&#34;&gt;hasNextLine&lt;/span&gt;()) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                String line &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; scanner.&lt;span style=&#34;color:#a6e22e&#34;&gt;nextLine&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (line.&lt;span style=&#34;color:#a6e22e&#34;&gt;startsWith&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dev_mount&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; line.&lt;span style=&#34;color:#a6e22e&#34;&gt;startsWith&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fuse_mount&amp;#34;&lt;/span&gt;)) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &#x9;String path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; line.&lt;span style=&#34;color:#a6e22e&#34;&gt;split&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;2&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;replaceAll&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:.*$&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;mountList.&lt;span style=&#34;color:#a6e22e&#34;&gt;contains&lt;/span&gt;(path)){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &#x9;File dir &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; File(path &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (dir.&lt;span style=&#34;color:#a6e22e&#34;&gt;canRead&lt;/span&gt;()){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &#x9;&#x9;mountList.&lt;span style=&#34;color:#a6e22e&#34;&gt;add&lt;/span&gt;(path);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        } &lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; (Exception e) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &#x9;mountList &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; ArrayList();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &#x9;mountList.&lt;span style=&#34;color:#a6e22e&#34;&gt;add&lt;/span&gt;(Environment.&lt;span style=&#34;color:#a6e22e&#34;&gt;getExternalStorageDirectory&lt;/span&gt;().&lt;span style=&#34;color:#a6e22e&#34;&gt;getAbsolutePath&lt;/span&gt;());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        } &lt;span style=&#34;color:#66d9ef&#34;&gt;finally&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (scanner &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                scanner.&lt;span style=&#34;color:#a6e22e&#34;&gt;close&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; mountList;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>MhtViewer 1.0.4リリース</title>
				<link>https://d.tflare.com/2012/06/03/190324/</link>
				<pubDate>Sun, 03 Jun 2012 10:03:24 +0000</pubDate>
				<guid>https://d.tflare.com/2012/06/03/190324/</guid>
				<description>&lt;h1 id=&#34;mhtviewer-104リリース&#34;&gt;MhtViewer 1.0.4リリース&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tflare.com/android/mhtviewer.html&#34;&gt;https://tflare.com/android/mhtviewer.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;以下の修正を行いました。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ディレクトリ選択画面でファイル名を表示するようにし、ファイル名を選択した場合、mhtの表示ができるように修正&lt;/li&gt;&#xA;&lt;li&gt;拡張子mhtmlに対応&lt;/li&gt;&#xA;&lt;li&gt;内部処理の細かい改善&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;MhtViewerはMHTML形式によって作成された、Webページのアーカイブファイルのビューアです。(Android2.2以上必須)&lt;/p&gt;&#xA;&lt;p&gt;長文のmhtファイルを読むために作成されました。&lt;/p&gt;</description>
			</item>
			<item>
				<title>MhtViewer 0.9.27リリース</title>
				<link>https://d.tflare.com/2012/05/26/083148/</link>
				<pubDate>Fri, 25 May 2012 23:31:48 +0000</pubDate>
				<guid>https://d.tflare.com/2012/05/26/083148/</guid>
				<description>&lt;h1 id=&#34;mhtviewer-0927リリース&#34;&gt;MhtViewer 0.9.27リリース&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tflare.com/android/mhtviewer.html&#34;&gt;https://tflare.com/android/mhtviewer.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;以下の事象に対応しました。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;htmlのcharsetと異なるcharsetがhtmlより前に指定されていると、文字化けが発生する&lt;/li&gt;&#xA;&lt;li&gt;最後のファイルの扱いが不完全になる（画像等が表示されない等）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;MhtViewerはMHTML形式によって作成された、Webページのアーカイブファイルのビューアです。(Android2.2以上必須)&lt;/p&gt;&#xA;&lt;p&gt;長文のmhtファイルを読むために作成されました。&lt;/p&gt;</description>
			</item>
			<item>
				<title>MhtViewer 0.9.15リリース</title>
				<link>https://d.tflare.com/2012/04/04/074501/</link>
				<pubDate>Tue, 03 Apr 2012 22:45:01 +0000</pubDate>
				<guid>https://d.tflare.com/2012/04/04/074501/</guid>
				<description>&lt;h1 id=&#34;mhtviewer-0915リリース&#34;&gt;MhtViewer 0.9.15リリース&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tflare.com/android/mhtviewer.html&#34;&gt;https://tflare.com/android/mhtviewer.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;初めて公開した0.7.1と比べて、大きく改善されています。&lt;br&gt;&#xA;MhtViewerはMHTML形式によって作成された、Webページのアーカイブファイルのビューアです。&lt;br&gt;&#xA;長文のmhtファイルを読むために作成されました。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
