スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

アプリから電話をかける

Intentを使うと、自作の別のアクティビティを呼び出せるだけでなく、さまざまなGoogleアプリケーションを呼び出すこともできます。

呼び出せるGoogleアプリケーションのリストはレファレンスにあります。

今回は、HelloActivity画面から電話をかけてみます。問い合わせなどで使えそうです。


発信画面の呼び出し


まずは、電話を発信する画面を呼び出します。アプリケーションとしてはDialerになります。

インテントでアプリケーションを呼び出すには、インスタンス作成の際のコンストラクタの引数にアクションを指定します。

Intent(String action)



アクションとは、簡単に言うと「具体的にやりたいこと」です。インテントが「漠然とやりたいこと」だとすると、アクションは、そのやりたいことを具体的に示すものです。

電話を発信したいときのアクションは、ACTION_DIAL です。ACTION_DIAL はIntentクラスの定数として定義されているので、引数とするときは

Intent intent = new Intent(Intent.ACTION_DIAL);

とクラス名まで指定します。

HelloAndroid.java
package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;

public class HelloAndroid extends Activity{

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
startActivity(intent);
}
});
}
}


main.xmlとstrings.xmlは省略します。

実行結果:
20110806_1
最初の画面です。クリックすると・・・


20110806_2
電話発信画面が表示されました。


発信番号の指定


先ほどのアプリケーションでは、電話番号を自分で入力しなければならず、ユーザーの不便が予想されます。

そこで、発信画面を呼び出すとすでに電話番号が入力された状態になるようにしましょう。

電話番号データを指定するには、Intentコンストラクタを呼び出す際の第二引数にURIオブジェクトを渡します。

Intent(String action, Uri uri)



ここでURI(Uniform Resource Identifier)とは、リソースを指し示す言葉です。URIのうち、Webページをリソースとしてその場所を示すのがURLです。

android.net.Uri は、このURIを生成・解釈するクラスです。

電話番号もリソースとして、parse()メソッドを使って Uriオブジェクトとすることができます。

static Uri parse(String uriString)



では実際にコーディングしてみましょう。

HelloAndroid.java
package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.net.Uri;

public class HelloAndroid extends Activity{

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:0123456789"));
startActivity(intent);
}
});
}
}


実行結果:
20110806_6
電話番号がデフォルトで表示されているダイヤル画面になりました。

ACTION_CALL


ACTION_DIAL は電話をかける一歩手前のアクションでしたが、ACTION_CALL を使えば実際に電話をかけるところまでできます。

まず、Android Manifestにて、CALL_PHONEの許可を与えます。

Android Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sample.basic"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.CALL_PHONE"/>

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SubActivity">
</activity>
</application>
</manifest>



Javaファイルは、ACTION_DIAL を ACTION_CALL に変更するだけです。

実行結果:
20110806_7

エミュレータによる実行のため「Mobile network not available.」というエラーメッセージが現れますが、おそらく問題ないでしょう(?)。

関連記事
スポンサーサイト

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://androidhacker.blog94.fc2.com/tb.php/30-c4a81842
  • 閉じるボタン
レファレンス
月別アーカイブ
リンク
カテゴリ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。