Android: ボタンを押して Intent を発行

AndroidのIntentの機能を確認するためのサンプルです。

テキスト領域にURIを入力し、ボタンを押すと、次のようなコードでIntentを発行します。
その結果、URIの値により、ブラウザやダイアラーが起動します。

Uri uri = Uri.parse(strInput); // strInputには"http://www.knowd.co.jp"とか電話番号"tel:012345678"とかを指定
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);

最初、新規作成したプロジェクトのスケルトンのコードに、この3行だけをonCreate()に追加して機能確認したのですが、あまりに気が利かないと思い、URLを入力するためのテキストボックスと、発行ボタンを付けました。(おかげで、Widgetの利用についても少し覚えた)


 =>
   

 =>

[ Intentについて ]

Intents and Intent Filters
  http://developer.android.com/guide/topics/intents/intents-filters.html

Three of the core components of an application — activities, services, and broadcast receivers — are activated through messages, called intents. ....

Intentクラス
  http://developer.android.com/reference/android/content/Intent.html

ACTION_VIEW
  http://developer.android.com/reference/android/content/Intent.html#ACTION_VIEW

Activityクラス、startActivity()メソッド
  http://developer.android.com/reference/android/app/Activity.html
  http://developer.android.com/reference/android/app/Activity.html#startActivity%28android.content.Intent%29

Starting Activities and Getting Results:
The startActivity(Intent) method is used to start a new activity, which will be placed at the top of the activity stack. It takes a single argument, an Intent, which describes the activity to be executed.

Uriクラス、parse()メソッド
  http://developer.android.com/reference/android/net/Uri.html

[ テキストボックスEditTextとボタンButtonの生成について ]

以下のページを参考にしました。わかりやすいサンプルが掲載されています。
  Android で再開する Java プログラミング(5) - Button と EditText で遊ぶ
  http://www.hakkaku.net/articles/20090629-471

例) IssueIntentSampleActivity.java

package jp.knowd.IssueIntentSample;

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

public class IssueIntentSampleActivity extends Activity {
   // Called when the activity is first created.
    //  利用する部品 
    public TextView txtInfo;
    public EditText edtInput;
    public Button btn;
    public TextView txtResult;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // レイアウトを作成
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        // 以下、部品を作成していく
        
        // ラベル
        txtInfo = new TextView(this);
        txtInfo.setText("入力例) http://www.knowd.co.jp, tel:0123456789");
        layout.addView(txtInfo);
        
        // エディタ
        edtInput = new EditText(this);
        layout.addView(edtInput);
        
        // ボタン
        btn = new Button(this);
        btn.setText("Intentを発行する");
        layout.addView(btn);
        
        // ボタンのイベントを設定、Intentを発行
        btn.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                String strInput = edtInput.getText().toString();
                Uri uri = Uri.parse(strInput);
                Intent intent = new Intent(Intent.ACTION_VIEW,uri);
                startActivity(intent);
             }
        });
    }
}