2011年06月08日

android開発 javascriptから電話機能をつかう

webviewを使ってwebとの連携アプリを作成した場合、かなり遠回りですが、以下のようなことがしたい場合の方法です。
電話番号のリンクをクリック

android側で確認ダイアログ表示

androidの通話機能を使い発信

android側でwebviewのjavascriptを有効にし、javascriptからandroid(java)の関数が呼び出せるようにします。

//javascriptを有効に
this.webview.getSettings().setJavaScriptEnabled(true);
this.webview.addJavascriptInterface(new JavaScriptCallback(),"android");


この場合、javascript側で「android」というオブジェクトが有効になります。それを以下のように使用。

//電話をかける
function call_phone(tel_no)
{
android.callPhone(tel_no);
}


再びandroid側の呼び出される通話機能を使用する関数

public void callPhone(String phoneNumber)
{
telno = phoneNumber;

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

//アラートダイアログのタイトルを設定します
alertDialogBuilder.setTitle("通話機能を使用します");

// アラートダイアログのメッセージを設定します
alertDialogBuilder.setMessage("通話機能を使用し電話しますがよろしいですか?");

//はいの処理
alertDialogBuilder.setPositiveButton("はい",new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse(telno));
startActivity(intent);
}
});

//いいえの処理
alertDialogBuilder.setNegativeButton("いいえ",
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
});

//アラートダイアログのキャンセルが可能かどうかを設定
alertDialogBuilder.setCancelable(true);
AlertDialog alertDialog = alertDialogBuilder.create();
//アラートダイアログを表示
alertDialog.show();
}

また、通話機能を使用するためにはandroid側でandroid.permission.CALL_PHONEをmanifestに追記する必要があります。

hiroki0907 at 17:09トラックバック(0)Google Android  

トラックバックURL


現在の戦闘力
ドラゴンボール改 3 [DVD]

このブログの戦闘力

3919

「ナッパ」
クラスです。

by ブログ戦闘力チェッカー

  • ライブドアブログ