Androidブラウザからのアプリ起動

6,346 views
Skip to first unread message

サミー

unread,
Jun 1, 2009, 4:01:04 AM6/1/09
to 日本Androidの会
はじめまして。サミーと申します。

Androidの標準のブラウザから自前のアプリを起動することはできないでしょうか?

以前の投稿でブラウザから電話をセキュリティ上の問題から起動できないというのがありました。
同じ理由でやはりできないでしょうか?

ご教授いただければ幸いです。よろしくお願いします。

まいむぞう

unread,
Jun 1, 2009, 5:53:19 AM6/1/09
to android-g...@googlegroups.com
まいむぞうです。

> Androidの標準のブラウザから自前のアプリを起動することはできないでしょうか?
> 以前の投稿でブラウザから電話をセキュリティ上の問題から起動できないというのがありました。
> 同じ理由でやはりできないでしょうか?

オライリーさんから出ている「初めてのAndroid」という本には、
自作アプリからWebView経由でJavaScriptを使って
Android上のJavaのコードを実行する方法が書いてありますね。

本を読む限りは、特にサンドボックス等は無いように思うので、そこからインテントを発行すれば
自前のアプリを実行する可能性はあるように思います。

ただ、これはあくまで自作アプリ上にJavaScriptからの呼び出しに備えるコードが必要なため、
標準ブラウザからはJavaのコードは実行できないですね。


そもそも論で、自作アプリの実行→WebView経由でJavaのコード実行→他のアプリ起動という
フローになるので、仰られている目的には合わないかもです。

------------------------------------------------------------------------------------------------------
大路裕介(おおみちゆうすけ)/まいむぞう
mail: mai...@gmail.com
skype: maimuzo
blog: http://fromnorth.blogspot.com/
service for rubyist: http://gemspec.info
for Android users: http://www.android-app.info/
------------------------------------------------------------------------------------------------------

2009/06/01 17:01 サミー <sam...@gmail.com>:

サミー

unread,
Jun 1, 2009, 7:01:55 AM6/1/09
to android-g...@googlegroups.com
サミーです。

やはりそうですよね。
確認ができてよかったです。
ご教授ありがとうございました。
--
****************************************
Osamu Masuda(Zeng tian xiu)
403 Shibuya-Bldg 1-27-2 Morino
machida-city Tokyo Japan 194-0022
Tel:81-42-725-8931
FAX:81-42-725-8931
mobile:81-90-2932-2159
sam...@gmail.com
sa...@h8.dion.ne.jp
sam...@ezweb.ne.jp
****************************************

Akio Kondo

unread,
Jun 1, 2009, 8:39:31 PM6/1/09
to 日本Androidの会
こんどう@組み込みWGです。

想定されている動作とは違うかもしれませんが、
以下の方法でブラウザから自作アプリを起動することができます。

自作アプリにHogeReciever(名前は任意)という名前のアクティビティを作っておいた場合、

AndroidManifest.xmlのHogeRecieverアクティビティのインテントフィルタを以下の様に書き換えます。

<activity android:name=".HogeReciever" android:label="@string/
app_name">
<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>

するとブラウザからhogeスキームを持つリンクでHogeRecieverアクティビティが起動するようになります。

こういうリンクをクリックすると起動します。
<a href="hoge://fuga/honya">test</a>

起動された側では

Intent intent = getIntent();
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
//URIを取得
Uri uri = intent.getData();
//URIのクエリー文字によってやりたい処理を変えたりとか。

}

とすることでandroid.intent.action.VIEWで起動されたことがわかり、
起動に使われたURIも取得できます。

おためしあれ

Happy coding!

On 6月1日, 午後8:01, サミー <samy...@gmail.com> wrote:
> サミーです。
>
> やはりそうですよね。
> 確認ができてよかったです。
> ご教授ありがとうございました。
>
>
>
> > まいむぞうです。
>
> > > Androidの標準のブラウザから自前のアプリを起動することはできないでしょうか?
> > > 以前の投稿でブラウザから電話をセキュリティ上の問題から起動できないというのがありました。
> > > 同じ理由でやはりできないでしょうか?
>
> > オライリーさんから出ている「初めてのAndroid」という本には、
> > 自作アプリからWebView経由でJavaScriptを使って
> > Android上のJavaのコードを実行する方法が書いてありますね。
>
> > 本を読む限りは、特にサンドボックス等は無いように思うので、そこからインテントを発行すれば
> > 自前のアプリを実行する可能性はあるように思います。
>
> > ただ、これはあくまで自作アプリ上にJavaScriptからの呼び出しに備えるコードが必要なため、
> > 標準ブラウザからはJavaのコードは実行できないですね。
>
> > そもそも論で、自作アプリの実行→WebView経由でJavaのコード実行→他のアプリ起動という
> > フローになるので、仰られている目的には合わないかもです。
>
> > --------------------------------------------------------------------------- ---------------------------
> > 大路裕介(おおみちゆうすけ)/まいむぞう
> > mail: maim...@gmail.com
> > skype: maimuzo
> > blog:http://fromnorth.blogspot.com/
> > service for rubyist:http://gemspec.info
> > for Android users:http://www.android-app.info/
>
> > --------------------------------------------------------------------------- ---------------------------
>
> > 2009/06/01 17:01 サミー <samy...@gmail.com>:
>
> > > はじめまして。サミーと申します。
>
> > > Androidの標準のブラウザから自前のアプリを起動することはできないでしょうか?
>
> > > 以前の投稿でブラウザから電話をセキュリティ上の問題から起動できないというのがありました。
> > > 同じ理由でやはりできないでしょうか?
>
> > > ご教授いただければ幸いです。よろしくお願いします。
>
> --
> ****************************************
> Osamu Masuda(Zeng tian xiu)
> 403 Shibuya-Bldg 1-27-2 Morino
> machida-city Tokyo Japan 194-0022
> Tel:81-42-725-8931
> FAX:81-42-725-8931
> mobile:81-90-2932-2159
> samy...@gmail.com
> sa...@h8.dion.ne.jp
> sam-...@ezweb.ne.jp
> ****************************************

サミー

unread,
Jun 1, 2009, 8:46:06 PM6/1/09
to android-g...@googlegroups.com
サミーです。
ためしてみます。
ありがとうございます。
sam...@gmail.com
sa...@h8.dion.ne.jp
sam...@ezweb.ne.jp
****************************************

まいむぞう

unread,
Jun 2, 2009, 12:55:07 AM6/2/09
to android-g...@googlegroups.com
まいむぞうです。

サミーさん、ミスリードごめんなさい。><

> 以下の方法でブラウザから自作アプリを起動することができます。
> 自作アプリにHogeReciever(名前は任意)という名前のアクティビティを作っておいた場合、
中略
> するとブラウザからhogeスキームを持つリンクでHogeRecieverアクティビティが起動するようになります。
> こういうリンクをクリックすると起動します。
> <a href="hoge://fuga/honya">test</a>

おぉ、これオモシロイですね。
hogeスキームが有効かどうかは、JavaScriptから非同期で通信してみて、結果が返ってくるかどうかを
確認するんでしょうか。

hogeスキームを処理するアプリが何者があるか(パッケージ名やバージョン)とか、既に使われている勝手スキーマは
どんなものがあるか共有するようなもの(OpenIntentのような)があれば、色々使えそうですね。

でも、規格として決まっているスキーマがあるので、ネームスペース的な理由から、
あまり勝手スキーマを氾濫させてはいけないんでしょうね。

--
------------------------------------------------------------------------------------------------------
大路裕介(おおみちゆうすけ)/まいむぞう
mail: mai...@gmail.com
skype: maimuzo
blog: http://fromnorth.blogspot.com/
service for rubyist: http://gemspec.info
for Android users: http://www.android-app.info/
------------------------------------------------------------------------------------------------------



2009/06/02 9:39 Akio Kondo <koj...@gmail.com>:
>
> こんどう@組み込みWGです。
>
> 想定されている動作とは違うかもしれませんが、
> 以下の方法でブラウザから自作アプリを起動することができます。
> 自作アプリにHogeReciever(名前は任意)という名前のアクティビティを作っておいた場合、

サミー

unread,
Jun 2, 2009, 1:25:08 AM6/2/09
to android-g...@googlegroups.com
まいむぞうさん
気にしないでください。
手探りで研究している最中ですので。

おもしろいです。
これで引数も渡せるといいなあと思ったりして。

でも、できることがわかっても、他に問題ないか検証しないといけないと思いました。
sam...@gmail.com
sa...@h8.dion.ne.jp
sam...@ezweb.ne.jp
****************************************

kabayan

unread,
Jun 21, 2009, 6:57:14 AM6/21/09
to 日本Androidの会
サミーさん、

kabayanです。※遅いレスですが

Webサイトに
<a id="productlink" href="geo:0,0?z=2">今すぐ起動</a>
のような内容のページを置いて、それを表示し、リンクを踏むとMapアプリが起動します。
しかし、ADP1だと動作しますが、エミュレータだと動きません。(いずれも1.5)
G1とかGDDとかだとどうなのかわかりませんが。

Logcatを見ると
06-21 19:47:50.474: INFO/ActivityManager(567): Starting activity:
Intent { action=android.intent.action.VIEW categories=
{android.intent.category.BROWSABLE} data=geo:0,0?z=2 (has extras) }

のようなメッセージが出ているのでintentは投げているように見えるのですが、エミュレータのブラウザだと
06-21 19:54:01.104: ERROR/browser(719): onReceivedError -10 geo:0,0?
z=2 The protocol is not supported.
と出て表示できません。ADP1だと問題なく表示できます。

なんか設定があるのでしょうかね。
参考までに。



On 6月2日, 午後2:25, サミー <samy...@gmail.com> wrote:
> まいむぞうさん
> 気にしないでください。
> 手探りで研究している最中ですので。
>
> おもしろいです。
> これで引数も渡せるといいなあと思ったりして。
>
> でも、できることがわかっても、他に問題ないか検証しないといけないと思いました。
>
>
>
>
>
> > まいむぞうです。
>
> > サミーさん、ミスリードごめんなさい。><
>
> > > 以下の方法でブラウザから自作アプリを起動することができます。
> > > 自作アプリにHogeReciever(名前は任意)という名前のアクティビティを作っておいた場合、
> > 中略
> > > するとブラウザからhogeスキームを持つリンクでHogeRecieverアクティビティが起動するようになります。
> > > こういうリンクをクリックすると起動します。
> > > <a href="hoge://fuga/honya">test</a>
>
> > おぉ、これオモシロイですね。
> > hogeスキームが有効かどうかは、JavaScriptから非同期で通信してみて、結果が返ってくるかどうかを
> > 確認するんでしょうか。
>
> > hogeスキームを処理するアプリが何者があるか(パッケージ名やバージョン)とか、既に使われている勝手スキーマは
> > どんなものがあるか共有するようなもの(OpenIntentのような)があれば、色々使えそうですね。
>
> > でも、規格として決まっているスキーマがあるので、ネームスペース的な理由から、
> > あまり勝手スキーマを氾濫させてはいけないんでしょうね。
>
> > --
>
> > -------------------------------------------------------------------------------------------------------
> > 大路裕介(おおみちゆうすけ)/まいむぞう
> > mail: maim...@gmail.com
> > skype: maimuzo
> > blog:http://fromnorth.blogspot.com/
> > service for rubyist:http://gemspec.info
> > for Android users:http://www.android-app.info/
>
> > -------------------------------------------------------------------------------------------------------
>
> > 2009/06/02 9:39 Akio Kondo <koji...@gmail.com>:
> samy...@gmail.com
> sa...@h8.dion.ne.jp
> sam-...@ezweb.ne.jp
> ****************************************- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

サミー

unread,
Jun 23, 2009, 7:15:37 PM6/23/09
to android-g...@googlegroups.com
ありがとうございます。
参考にさせていただきます。

2009/06/21 19:57 kabayan <tka...@gmail.com>:
sam...@gmail.com
sa...@h8.dion.ne.jp
sam...@ezweb.ne.jp
****************************************
Reply all
Reply to author
Forward
0 new messages