Androidでブラウザから自分のアプリを起動したい
1.AndroidManifest.xmlに定義を追加します。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="co.jp.millmo.android.sample" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <!-- デフォルトで記述する定義。この部分が消すと、メニューアイコンが消えます。その方が都合がいい時もありますが。 --> <activity android:label="@string/app_name" android:name=".CallCS"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- デフォルトで記述する定義。終わり --> <!-- ブラウザからの起動するための定義 --> <activity android:label="@string/app_name" android:name=".CallCS"> <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="testcall"/> </intent-filter> </activity> <!-- ブラウザからの起動するための定義終わり --> </application> <uses-sdk android:minSdkVersion="3" /> </manifest>
2.ブラウザからのアプリの呼び出し。
htmlに以下を記述
<html> <body> <head><title>cs</title></head> <center><a href="testcall://test/">testcall</a></center> </body> </html>
3.プログラムに以下のような記述を追加して、パラメータを取得します。
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウトを設定 setContentView(R.layout.main); // 値の取得 Intent intent = getIntent(); String action = intent.getAction(); Log.d("Dbg", "action = [" + action + "]"); if (Intent.ACTION_VIEW.equals(action)) { //ブラウザから起動された場合 Uri uri = intent.getData(); //uriにはブラウザで設定した「testcall://test/」とscheme名も含めて取得されます。 Log.d("Dbg", "uri = [" + uri.toString() + "]"); } else if(Intent.ACTION_MAIN.equals(action)){ //アイコンのクリックで起動した場合 } }