用語解説

android:exported=”false”とは何か?分かりやすく説明

android:exported=”false”とは何か?

exportedと書かれているように、外部のアプリから、今自分が作っているActivityを起動できるかどうかを設定するものです。

実際のコードでは、こんな感じで書かれています。

<activity></activity>タグで囲まれていることから、画面ごとに設定するものなんだなと理解することができると思います。

android:exported="true"

の場合だと、どのアプリからもandroid:exported="true"が書かれている画面にアクセスができ、正確なクラス名で起動ができます。

android:exported="false"

の場合だと、同じアプリのコンポーネント、同じユーザーIDを持つアプリ、特権システムコンポーネントでしか起動できないです。

Android12から、インテントフィルタを持つ、「Activity」「Service」「BroadcastReceiver」に対して、andorid:exported属性を明示的に宣言する必要があります。

アプリをどのレベルで公開していくかこのコード(android:exported)を見ればわかるようになるということですね。

コンポーネントとは

コンポーネントとは、Androidアプリに不可欠な構成要素のことです。

アクティビティ、サービス、ブロードキャストレシーバー、コンテンツプロバイダの4つのタイプがあります。

アクティビティとは?

一言で表すと、画面のことです。

クイズアプリで考えてみます。

初期画面のMainActivity、問題が出てくるQuizActivity、結果を表示するResultActivityと3つのActivityでクイズアプリを作ることができます。

詳しくはこちらの記事で説明しています。

【Androidアプリ】Activityとは何?分かりやすく説明androidのActivityについてメモしておきます。 androidはカタカナ言葉が多く読みにくいですね。 Activit...

サービスとは?

一言で表すと、バックグラウンドで操作するアプリの構成要素です。

具体的なものとして、音楽の再生、ネットワークトランザクションの処理などが思い付きます。

ユーザーがアプリを使っていなくても、バックグラウンドで実行できるコンポーネントということですね。

Activityから表示UIを無くしたようなコンポーネントとも言えます。

トランザクションとは?

トランザクションとは一連の処理のまとまりのことです。

要は、ネットワークに関する受信、送信、書き込みなど全ての処理をワンセットで行うことを言います。

ブロードキャストレシーバーとは?

システムが実行中でないアプリでもイベントを配信できるようにするコンポーネントです。

システムから発信する具体例として、電池が少ない事を通知したり、画面がキャプチャされたことを通知したり、画面がオフになったことを通知するブロードキャストがあります。

アプリから発信する具体例として、端末にデータがダウンロードされた事を通知するものがあります。

コンテンツプロバイダとは?

データを共有する際に使う、コンポーネントのことです。

仲介役のようなイメージを持つとわかりやすいと思います。

他のアプリのデータへのアクセスを管理したり、自分のアプリの保存したデータへアクセスするときに安全にアクセスして変更することができます。

特権システムコンポーネントとは

特権を持ったユーザーが制御できるシステムのことでしょうか。

ちょっと、調べても理解することができなかったので、ご理解ある方コメントにて教えていただければ幸いです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です