ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

androidのIntentで日本語ファイル名を扱う時の注意点

Uri型で渡すので、SDカードとかに保存されたファイル名を渡すときは以下のような感じでエスケープしないとダメ。

public void playMusic()
{
    Intent it = new Intent(Intent.ACTION_VIEW);
    Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + Uri.encode("ほげ.mp3"));
    it.setDataAndType(uri, "audio/mp3");
    trackListActivity.parentActivityGroup.getParent().startActivity(it);
}

Uriなので当然と言えば当然だよね・・・orz
ちなみに、URLエンコードしないで渡すとNo Activity found to handle Intentというエラーが発生する。