インテント

  • 投稿者:
  • 投稿カテゴリー:その他

明示的インテント

明示的インテントはクラス名を明示して起動するインテント

RecyclerViewのボタンに明示的インテントを設定する例

//-------------------------------------------------------
// インテント起動側
//-------------------------------------------------------
override fun onBindViewHolder(
    holder: LetterViewHolder,
    position: Int) {
    val item = list.get(position)
    holder.button.text = item.toString()

    // ワードボタンのクリックリスナー
    holder.button.setOnClickListener{
        // 明示的インテントの設定
        // コンテキストを取得する
        val context = holder.view.context
        // コンテキストと遷移先のクラス名でインテントを作成
        val intent = Intent(context, DetailActivity::class.java)
        // インテントに引数(エクストラ)を設定
        intent.putExtra("letter",holder.button.text.toString())
        // インテント使ってアクティビティを起動
        context.startActivity(intent)
    }
}

//-------------------------------------------------------
// 受取り側のアクティビティ
//-------------------------------------------------------
// onCreateメソッド等でインテントから引数(extras)を取得
val letterId = intent?.extras?.getString("letter").toString()

暗黙的インテント

暗黙的インテントはクラス名を明示せずシステム依存のアプリを起動するインテント

暗黙的インテントのアクションタイプ

CATEGORY_APP_MAPS – マップアプリを起動する
CATEGORY_APP_EMAIL – メールアプリを起動する
CATEGORY_APP_GALLERY – ギャラリー(写真)アプリを起動する
ACTION_SET_ALARM – バックグラウンドでアラームを設定する
ACTION_DIAL – 通話を開始する

RecyclerViewのボタンに暗黙的インテントを設定する例

//-------------------------------------------------------
// インテント起動側
//-------------------------------------------------------
override fun onBindViewHolder(holder: WordViewHolder, position: Int) {
    // 表示する単語名
    val item = filteredWords[position]
    // コンテキストの取得
    val context = holder.view.context

    // ビューホルダに単語名をセット
    holder.button.text = item

    // 単語ボタンのクリックリスナー
    holder.button.setOnClickListener {
        // uriの作成
        val queryUrl: Uri = Uri.parse("${DetailActivity.SEARCH_PREFIX}${item}")
        // 暗黙インテントの作成
        val intent = Intent(Intent.ACTION_VIEW, queryUrl)
        // アクティビティの起動
        context.startActivity(intent)
    }
}

暗黙的インテントでメール送信する例

        // メール送信の暗黙インテントを作成
        val intent = Intent(Intent.ACTION_SEND)
            .setType("text/plain")
            .putExtra(Intent.EXTRA_SUBJECT, getString(R.string.new_cupcake_order))
            .putExtra(Intent.EXTRA_TEXT, orderSummary)

        // 暗黙インテントを処理出来るかをチェック
        if (activity?.packageManager?.resolveActivity(intent, 0) != null) {
            // 処理可能な場合はアプリを起動
            startActivity(intent)
        }

トレーニング > KOTLIN を用いた ANDROID の基本 > ナビゲーション > 画面の移動 > アクティビティとインテント > 5. 明示的インテントを設定する