AndroidのIntent - Data属性とType属性
Data属性はAction属性にデータを提供する。
特性:
Type属性はData属性が指定したUriのMINEタイプを指定する。 abc/xyzのフォーマットであればOK。
DataとTypeの関係:
- Intentに先にDataを指定、後にTypeを指定した場合、Type属性がData属性を上書きする
- Intentに先にTypeを指定、後にDataを指定した場合、Data属性がType属性を上書きする
- Intentが両方の属性を持ちたい場合には、IntentのsetDataAndType()を利用する
いくつかのAction属性とData属性の組み合わせ
- ACTION_VIEW contect://com.android.contacts/contacts/1
- IDが1の連絡先表示画面
- ACTION_EDIT contect://com.android.contacts/contacts/1
- IDが1の連絡先編集画面
- ACTION_DIAL contect://com.android.contacts/contacts/1
- IDが1の連絡先ダイアル画面
- ACTION_VIEW tel:123
- 123ダイアル
- ACTION_DIAL tel:123
- 123ダイアル
- ACTION_VIEW content://contacts/people/
- 連絡先リストを表示する
サンプルコード
package com.example.liguofeng.intentsample; import android.app.Activity; import android.content.ComponentName; import android.content.CursorLoader; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { public static int PICK_CONTACT = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 指定URL表示 Button btn1 = (Button) findViewById(R.id.showURL); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Intent生成 Intent intent = new Intent(); // Action属性設定 intent.setAction(Intent.ACTION_VIEW); // Data属性設定 Uri uri = Uri.parse("http://google.co.jp"); intent.setData(uri); // 起動 startActivity(intent); } }); // 連絡先編集画面表示 Button btn2 = (Button) findViewById(R.id.showContact); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Intent生成 Intent intent = new Intent(); // Action属性設定 intent.setAction(Intent.ACTION_EDIT); // Data属性設定 Uri uri = Uri.parse("content://com.android.contacts/contacts/1"); intent.setData(uri); // 起動 startActivity(intent); } }); // ダイアル画面表示 Button btn3 = (Button) findViewById(R.id.dialBtn); btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Intent生成 Intent intent = new Intent(); // Action属性設定 intent.setAction(Intent.ACTION_DIAL); // Data属性設定 Uri uri = Uri.parse("tel:123456789"); intent.setData(uri); // 起動 startActivity(intent); } }); } }