Android

Buttonを押下したら電話、ブラウザに接続するAndroidサンプルアプリ

Posted 9月 28 2012 by NABE  , , with 0 コメント

Buttonを押すと電話がかかったり、ブラウザに繋がります!

※はじめに
この記事はAndroidアプリの開発が、初心者であるという方のための記事です。
そのため、なるべく複雑な説明は避け、コピー&ペイストですぐに動くものをご紹介します。
JavaやAndroidを理解されている方で細かい説明が必要な方は、当ブログ内の連載記事である「Android Tips」をご覧ください。

私がAndroidのアプリを開発しはじめた頃、一番欲しかったものは・・・
「サンプルコードをほぼそのままコピーして、自分のソースコードに張り付けても、ちゃんと動いてくれるサンプルコード」でした。
しかしながら当時私は、中々ピンポイントでこれだっ!というものには出会えませんでした。。。

だから少しでも、Androidのアプリを作り始めて、私と同じような思いをされる方々のお役に立てればと思い書いていきます。
パッと見、難しい処理に見えても心配はいりません。
すぐにわかるようになりますので、気軽にコピー&ペイストしてみてください。
(注意:当然ですが、アプリにコピペする場合は、アプリのファイル名やパッケージ名はご自身のものに修正してくださいね。)

今回はAndroidのウィジェットの一つであるButton(ボタン)です。

意外に簡単なButton

ボタンを押した後の処理は、複雑なものでなければ意外に簡単です。

アプリ完成図

MainActivity.java(ソースコード)

2つの方法のどちらかで試してみてください。
細かい説明はあえてしません。
とりあえず動かしてみましょう。
※電話に関してはボタンを押した時に、指定している番号にいきなりかかります。
通常は「本当に電話をかけますか?」というダイアログを表示したり、一度ダイヤル画面に移動させる等の処理を書きます。
ここでは極力簡単にするためにこの方法にしておりますので、ご了承くださいね。

  • URLの指定:方法①では22行目で、方法②では44行目で指定しています。
  • 電話番号の指定:方法①では33行目で、方法②では59行目で指定しています。

方法①:匿名クラスを用いて、同クラス内に処理を記載

package com.example.buttonsample;

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

public class MainActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Button b1 = (Button) findViewById(R.id.button1);
		b1.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Uri uri1 = Uri.parse("http://www.networkacademy.jp/");
				Intent intent1 = new Intent(Intent.ACTION_VIEW, uri1);
				startActivity(intent1);
			}
		});

		Button b2 = (Button) findViewById(R.id.button2);
		b2.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Uri uri2 = Uri.parse("tel:0120105907");
				Intent intent2 = new Intent(Intent.ACTION_CALL, uri2);
				startActivity(intent2);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
}

方法②:別クラスにボタンを押した時の処理を記載

package com.example.buttonsample;

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

public class MainActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		MyOnClickLisener1 listener1 = new MyOnClickLisener1(this);
		Button b1 = (Button) findViewById(R.id.button1);
		b1.setOnClickListener(listener1);

		MyOnClickLisener2 listener2 = new MyOnClickLisener2(this);
		Button b2 = (Button) findViewById(R.id.button1);
		b2.setOnClickListener(listener2);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
}

class MyOnClickLisener1 implements OnClickListener {
	Context context;

	public MyOnClickLisener1(Context context) {
		this.context = context;
	}

	@Override
	public void onClick(View v) {
		Uri uri1 = Uri.parse("http://www.networkacademy.jp/");
		Intent intent1 = new Intent(Intent.ACTION_VIEW, uri1);
		context.startActivity(intent1);
	}
}

class MyOnClickLisener2 implements OnClickListener {
	Context context;

	public MyOnClickLisener2(Context context) {
		this.context = context;
	}

	@Override
	public void onClick(View v) {
		Uri uri2 = Uri.parse("tel:0120105907");
		Intent intent2 = new Intent(Intent.ACTION_CALL, uri2);
		context.startActivity(intent2);
	}
}

activity_main.xml(旧バージョンではmain.xml)

アプリの画面に表示している文字やボタンはここで決めています。

  • 表示させる文字:12行目、21行目、30行目で各々表示させる文字を決めています。
  • ボタンのid:15行目と24行目でボタンのidを決めていますね!
    例えば、ここでは一つ目のボタンのidはbutton1です。
    上の方法①の17行目では、ボタン1に関する処理を書いているため、button1が使われています。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="ボタン処理" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/button2"
        android:layout_below="@+id/textView1"
        android:text="SAKに接続" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/button3"
        android:layout_below="@+id/button1"
        android:text="SAKに電話" />

</RelativeLayout>

AndroidManifestの一部

電話アプリやブラウザアプリを使用するので、マニフェストファイルにuses-permissionを追加します。
追加内容は次の2つです。

  • 電話アプリを使用する:10行目
  • インターネットを使用する:11行目
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.buttonsample"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.INTERNET" />

これでOKです。
ボタンを押した後の処理が、なんとなくわかったかと思います。
冒頭でもお伝えしましたが、最初から事細かに理解しよとせずに、なんとなくでいいので、動きを見ながらじっくりと理解してくださいね。


Android サンプルアプリ集



  未経験OKの仕事 |  上場企業の仕事 |  高待遇の仕事 |  外資系の仕事 |  社内SEで検索 |  自社サービスで検索





メールアドレス
ご質問・問い合わせ等、ご自由にお書きください。