|
| 暗黙のインテント |
|
暗黙的インテント (Implicit Intents)言語不明瞭・意味不明瞭です。 自分で設計したインテントを呼び出すにはクラスを使って実装します。 自分のアプリを使用中にwebを閲覧したいときに暗黙的インテントを 使えばwebブラウザを起動できます。 MainActivituy.Java
package com.example.implicit;
import androidx.appcompat.app.AppCompatActivity;
import android.app.SearchManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnWeb).setOnClickListener(this);
findViewById(R.id.btnMail).setOnClickListener(this);
findViewById(R.id.btnPhone).setOnClickListener(this);
findViewById(R.id.btnPhoneList).setOnClickListener(this);
findViewById(R.id.btnSearch).setOnClickListener(this);
}
// @Override
public void onClick(View v) {
if(v.getId() == R.id.btnWeb){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://sadaji.net"));
startActivity(intent);
}
else if(v.getId() == R.id.btnMail ){
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:xxxx@sadaji.nert"));
startActivity(intent);
}
else if(v.getId() == R.id.btnPhone ){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:0283-00-0000"));
startActivity(intent);
}
else if(v.getId() == R.id.btnPhoneList ){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/poeape/1"));
startActivity(intent);
}
else if(v.getId() == R.id.btnSearch ){
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "きつねダンス");
startActivity(intent);
}
}
}
まずボタンのイベントリスナーをactivity_main.xml記述するのは非推奨になったので、 implements View.OnClickListener を使って実装します。各ボタンのイベントリスナーをonCreate()で、 findViewById(R.id.btnWeb).setOnClickListener(this); で実装します。 public void onClick(View v) がイベントリスナーです。 Webの閲覧は、
ここで注目するのはURIを指定してブラウザの指定していません。
Androidが自動でブラウザを起動してURIのページを表示します。もし2つ以上のブラウザがインストールされているとブラウザの選択画面が 表示されます。 サンプルを用意しました。 次にConstraintLayoutが標準になったようなったようで、ボタンの配置で いろいろ文句をいわれました。慣れると柔軟な配置ができそうです。 (まだ慣れていない)activity_main.xmlのソースです。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/btnWeb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="149dp"
android:layout_marginTop="30dp"
android:text="@string/btn_web"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnMail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="149dp"
android:layout_marginTop="30dp"
android:text="@string/btn_mail"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnWeb" />
<Button
android:id="@+id/btnPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="149dp"
android:layout_marginTop="30dp"
android:text="@string/btn_phone"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnMail" />
<Button
android:id="@+id/btnPhoneList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="149dp"
android:layout_marginTop="30dp"
android:text="@string/btn_phone_list"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnPhone" />
<Button
android:id="@+id/btnSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="149dp"
android:layout_marginTop="30dp"
android:text="@string/btn_search"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnPhoneList" />
</androidx.constraintlayout.widget.ConstraintLayout>
詳しくは、一般的なインテント を参照してください。 |