2011年10月08日

暗黙のインテントで他のエディタアプリを起動する

えー、絶賛やる気失い中のL----Noteのバージョンアップ作業ですが、今度は自前の編集機能が信頼できないので(詳細は前回のエントリーから推測してください)、外部のエディタにデータを投げる(というか暗黙のインテントを投げる)機能を作成しました。
つまり、本文の編集を他にエディタをインストールしている人はそっちで編集することができるようにすれば、多少責任逃れができるかな、と。

そんな訳で、今回もインテント一発!と行きたかったのですが、これが結構難航しました。
どのように暗黙的インテントを投げればいいのか、探してもなかなか見つからなかったのです。
でも、ヒントはありました。他のアプリが投げるインテントをLOGCATで観察しろというアイディアです。
なるほど、アストロファイルマネージャでテキストファイルを「次の形式で開く」−「テキスト」とすると、エディタ(というかプレーンテキストを受け取るアプリ)でファイルを開くことができます。
そこを観察して、Starting activityの行と同じ形式にできれば良いと言うことです。

すると、ACTIONはVIEWだということがすぐ分かりましたが、ファイルのパスとMIMEタイプの設定がうまくいきませんでした。
結局例によって非論理的な総当たり的作戦を敢行したのですが、その結果以下のコードで動きました。

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + filePath),"text/plain"); // filePathはルートディレクトリからのパス(/mnt/sdcard/....)
intent.putExtra(Intent.ACTION_VIEW, intent.getDataString());
startActivity(intent);

これが正しいか、例によってあまり信用して欲しくないのですが、とりあえず動いたことは動きました。
ポイントはintent.setTypeとintent.setDataを別々に設定せず、intent.setDataAndTypeにしないとMIMEタイプが抜けてしまうというところではないかと思います。

参考にさせていただいたサイト

クジラブログ様
http://d.aoikujira.com/blog/index.php?Android%E3%81%AEIntent%E3%81%A7%E4%BB%96%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB

グロブ様
http://typea.info/blg/glob/2011/02/android-intent-twitter-evernote.html

posted by 白虹 at 00:45| Comment(1) | TrackBack(0) | Android開発
この記事へのコメント
同じところで悩んでたので助かりました(^^)/
Posted by ごまお at 2014年07月13日 01:25
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/48373945

この記事へのトラックバック