読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

ブラウザからのURLスキーマを使った起動方法、テスト方法

概要

ブラウザからリンクを押下すると、アプリが立ち上がるようにする
ついでに、それをテストするためのHTMLも残しておく

詳細

web側対応

以下のようなURLスキーマでリンク先を定義

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>アプリケーション起動サンプル</title>
	</head>
	<body>
		<a href="test://execute?titleNo=4">test</a>
	</body>
</html>

ローカルでテストしたいときは、DDMSからSDカード内、内部ストレージなどにHTMLファイルを保存し、読み込む
f:id:tiro105:20140704124537p:plain

アプリ側対応

ブラウザからの起動を許可し、許可するURLスキーマを定義する
AndroidManifestのActivityタグ、IntentFilterに以下を追加

    <activity
        android:name=
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <!-- 追加ここから -->
        <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="test" android:host="execute" />
        </intent-filter>            
        <!-- 追加ここまで -->
    </activity>

URLのパラメータが必要な場合はActivityコード内で受け取る

	 // spwebからの起動
    if (Intent.ACTION_VIEW.equals(getIntent().getAction())) {
        Uri uri = intent.getData();
        if (uri != null) {
            String param1 = uri.getQueryParameter("titleNo");
			try {
	            mTitleNo = Integer.valueOf(param1); 
			}catch(Exception e) {
				e.printStackTrace();
			}
        }
    }