Android 1.6 では AndroidManifest.xml での android:scheme の中身に @string は使っちゃダメ絶対

今日発見した Android 1.6 で発生すると思われる不具合のメモ。IS01とHT-03Aで再現しました。


独自スキームでアプリをブラウザ等から起動させたい場合、こんな指定をします。この例だと hoge:// とかで呼び出せるようになります。

[xml highlight=”6″]
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="hoge" />
</intent-filter>
</activity>
[/xml]

上記だと Android 1.6 でも 2.2 でも 2.3 でも期待通り動作します。
でもandroid:schemeをstring.xmlに切り出してやるとAndroid 1.6で何故か動作しません。
Android 2.2 とか 2.3 では大丈夫っぽい。

[xml highlight=”6″]
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="@string/app_scheme" />
</intent-filter>
</activity>
[/xml]

もうAndroid 1.6をサポートしなくてもいい気がするけど大人の事情でサポートする必要があるときはお気をつけて。

Share on Facebook0Share on Google+0Tweet about this on TwitterBuffer this pageEmail this to someone