何Android PendingIntent?
-
25-09-2019 - |
質問
思Android.を拝読させていただきましたAndroidの文書はまだあまり明確にして頂きたい。誰でもできるので教えてちょうど PendingIntent
す。
解決
A PendingIntent
はあなたの外国出願は、事前に定義された作品を実行するために、アプリケーションのアクセス許可を使用することを可能にする外国出願(例えばNotificationManager
、AlarmManager
、ホーム画面のAppWidgetManager
、または他のサードパーティアプリケーション)、に与えることをトークンですコードのの。
、それは自身の権限であなたのIntent
を実行します。あなたが外国出願にPendingIntent
を与えた場合でも、そのアプリケーションは、アプリケーションの許可を使用してIntent
を実行します。
他のヒント
意図は標準のメール機構にAndroidを表現する、ユーザーの意思を行います。彼らはできると他のコンポーネントを定義または、Android os.
例:
- 放送メッセージ
- のカメラ
- サービス開始
- 発活動
- Webページの表示またはリストの連絡先
ダイヤル電話番号または電話通話
使用されている
1)お電話部品
2)システムにお知らせの一部のイベントです。
論理ワークフローを作ることを意図は通常として
- 作成の趣旨
- b.追加意のオプション-> Ex.どのような意図しているOSや属性に関する意思などのテキスト文字列または何かれているとの趣旨
- c.の趣旨
実生活の例:ということかいので、朝起きん"進"への洗面所。まず考えると、洗面所がないのが、洗面所付き。ましい脳のベッドは最初に、そして徒歩洗面所、そしてリリース後洗い自分の手を拭きった。私がいかにして送コマンドを身体にかかります。
A PendingIntent
処理ではない。でき渡ししますの将来の趣旨を別のアプリケーションすることへの応用を実行する意思としてかった場合には、 same permissions as your application
, るかないかのご応募はまだ周りの目的は、最終的に呼び出されます。このurlに直接アクセスいただき、外国出願、外国のアプリケーションを使用してアプリケーションのアクセス権を実行した所定のコードです。
と言えるでし PendingIntent
別途、付与する権利の操作を行ないとして指定された場合、他のアプリケーションした(同一の権限とアイデンティティ).など に注意が必要かを構築する PendingIntent
:よく、例えば、ベース意しておきましては、コンポーネント名を明示的に設定を一つの自分の部品についてアフターサービスについては、最終的に送ります。
この意思アクションを実行するものとなります。それを考える"を意した。の理由で必要が意図を作成する必要があ開始から有効な Context
お申し込みがある場合は、気予測を算出するのに使用時に実行したいのですが技術的には、アプリケーションの外部のコンテキストに共通するの例を立ち上げ活動からの通知または BroadcastReceiver
.により作成 PendingIntent
使用する打上げ、活動をしている Context
だから内側に別の活動又はサービス)
引き続き、実生活での例:ということかしたいと思いシャワーしていきたいと思っているシャワー後、ブラシ自分の歯で食べて朝食になります。でんきシャワ以上で30~40分です。まだまだ私の頭を必要とすることに備えて自分の服作り、その階段のバスルーム、そして服を脱ぐと、その後シャワー付きです。しかし、このようなことは起こらなくなるまで30~40分が経過しています。しかし、今までの懸案の意図をシャワー付きです。で申請中で30-40分です。
では、長文ありがとうございましくは差が出願中の趣旨、定期的に意図するだけでも構いません。短:
通常の意図-> DOES NOT REQUIRE PENDING INTENT TO BE MADE
保留中の意図-> REQUIRES A REGULAR INTENT TO BE CREATED
意図して二つの種類 明示的な や 暗黙的な
明示的な意思:申請が認識する成分を呼び出を行う行為
暗黙的Intent:申請が認識しないのコンポーネントを正確に行う希望です。するために、いつの間に言い表示したいURLは、システムを決定どのコンポーネントを満たすのです。
より良い明確な考え方の意思.気に以下のリンク
A保留中の意図は、の関係なく、のアプリケーション・プロセスが生きているか否かのアプリに代わってアクションを実行するために、いくつかのアプリに与えるトークンです。
私は、ドキュメントが十分に詳述されていると思います: 保留テントドキュメントがに。
ジャスト(放送テント、スケジューリングアラーム)のような保留中のインテントのためのユースケースを考えると、ドキュメントが明確かつ有意義になります。
私の場合、許可率が高くなり、スムーズに答えな googleの公式文書 たかの概念 PendingIntent
クラスです。
そしてまたこのビデオ、 Google I/O2013年 を超えての青写 セッション.このビデオ、googler Jaikumarガネーシュ説明していか PendingIntent
は、そのものにしてくれたのです。
以下は転写の映像(15:24).
この懸案の趣旨?
このトークンをアプリのプロセスへのプロセス のプロセスで目を覚ましアプリがイベントなどが挙げられる.なのでそのアプリケーションの背景なしています。きものなどが挙げられるまで目を覚ます。このバッテリーです。
この説明が明確であるこのスニペットのコードが含まれるセッションのランドクルーザープラド).
PendingIntent mIntent = PendingIntent.getService(...);
mLocationClient.requestLocationUpdates(locationRequest, mIntent);
public void onHandleIntent(Intent intent) {
String action = intent.getAction();
if (ACTION_LOCATION.equals(action)) {
Location location = intent.getParcelableExtra(...)
}
}
なぜPendingIntentが必要ですか? したヴィッセル神戸は、神戸市など
- なぜ受けもしくは本アプリケーションを作成できないの
Intent
または - なぜかできませんので、簡単な
Intent
同じ目的です。
E.g.Intent bluetoothIntent= new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
ま送 bluetoothIntent
他のアプリケーションな許可 android.permission.BLUETOOTH_ADMIN
, とを受けできないとのBluetoothを有効に startActivity(bluetoothIntent)
.
の制限を克服を PendingIntent
.と PendingIntent
受信用限をなしてい android.permission.BLUETOOTH_ADMIN
を有効に機能します。 源.
意図を保留することは、将来のある時点で開始される意図です。通常の意図を開始し、すぐにそれがstartActivity(Intent)
またはStartService(Intent)
に渡されたときます。
他のアプリを使用することができ、将来の意図。
そして、ここで1を作成する例を示します。
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendIntent = PendingIntent.getActivity(context, 0, intent, 0);
タクシーナ
趣旨
意図的に使用開始サービス例えば:
Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
startService(intent);
このように呼び出すときは、タクシー:
Myself = CurrentClass
Taxi Driver = ServiceClass
保留意
お使いこなせるよう、最低限必要なもののようになります:
Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
PendingIntent pi = PendingIntent.getService(parameter, parameter, intent, parameter);
getDataFromThirdParty(parameter, parameter, pi, parameter);
この第三者のサービスの代行を行うことができる。実際の類推でUberやLyftたタクシー会社
送信する請求乗Uber/Lyft.その場合は、それを見ていて気分が良いものを呼び出しますのドライバーの配布を行うことができる。
そのため:
Uber/Lyft ------ ThirdParty which receives PendingIntent
Myself --------- Class calling PendingIntent
Taxi Driver ---- ServiceClass
A PendingIntentは、この他のアプリケーションがコードの事前に定義された部分を実行するために、アプリケーションのアクセス許可を使用することができます別のアプリケーション(たとえば通知マネージャ、アラームマネージャまたは他のサードパーティアプリケーション)、に与えることをトークンです。 保留中の意図を経由して放送を行うためにはそうPendingIntent.getBroadcast経由PendingIntentを取得します()。保留中の意図を経由して活動を行うために、あなたが)(PendingIntent.getActivity経由での活動を受け取ります。
何意向ですか?
意図は、あなたが何かの特定を行うためにアンドロイドOSにコマンドを送信することができますAndroidの中の特定のコマンドです。場所を取る必要があるアクションのように考えてください。そのような電子メールを送信、または電子メールに写真を添付たり、アプリケーションを起動するように行うことができる多くのアクションがあります。 次のように意図を作成する論理的なワークフローは通常、次のとおりです。 A。テントを作成します。 B。テントのオプションを追加 - >例。意図私たちは、このようなテキスト文字列か何かを意図と一緒に渡されているとして、OSやその意図に関連するすべての属性に送信しているの種類 C。 RUNテント
実際の生活の例:レッツ言う私は午前中に目を覚ますと、私はトイレに行くために「INTEND」。私が最初にトイレに行くことについて考える必要があるだろうが、それは本当に私が洗面所に取得していません。私はその後、その後に行くと私の手を拭き、行くと私の手を洗った後、洗面所に歩いて、その後、離した後、最初にベッドから出るために私の脳に伝える必要があります。私は行くよどこ知ったら私が開始するためにコマンドを送信し、私の体は、アクションを実行します。
保留中のインテントとは何ですか?
実際の生活の例から続けて、聞かせてのは、私はシャワーを浴びたいと言うが、私は私の歯を磨くと朝食を食べ、AFTERシャワーたいです。私が知っているので、私は少なくとも30分から40分まで、シャワーされません。私はまだ、私は私の服を準備する必要があることを私の頭の中で持って、再びバスルームに階段を歩いて、その後、服を脱ぎ、その後シャワー。 30〜40分が経過するまでただし、これは発生しません。私は今、シャワーに対する保留中の意図を持っています。これは、30〜40分間保留されます。
これはかなり保留意図と定期的な意図の違いです。通常のインテントは、あなたが最初の定期的なテントのセットアップを持っている必要が保留テントを作成するために、しかし、保留意図せずに作成することができます。
PendingIntent
は、基本的には別のIntent
オブジェクトをラップするオブジェクトです。そして、それはあなたがそのアプリに、操作を行うことは、あなた自身のアプリケーションのプロセス(同じ権限とアイデンティティ)から実行されたかのように、すなわち、意図を実行する権限を付与している外国人のアプリケーションに渡すことができます。セキュリティ上の理由から、あなたは常にではなく、暗黙的であるよりPendingIntentへの明示的なインテントを渡す必要があります。
PendingIntent aPendingIntent = PendingIntent.getService(Context, 0, aIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
、
実行する意図と目標行動の1 A記述。まず、あなたは意図を作成する必要があり、その後、あなたがテントに、実行したい特定のJavaクラスを渡す必要があります。
2. PendingIntent.getActivityによって、あなたのクラスアクションクラスで、それらのJavaクラス、PendingIntent.getActivities(コンテキスト、int型、テント[]、int型)、PendingIntent.getBroadcast(コンテキスト、int型、テント、int型)、およびPendingIntentを呼び出すことができます。 getService(コンテキスト、int型、テント、int型);
ここでは、ある意図は、ステップ1
から来ていることを確認します
3.あなたは別のアプリケーションにPendingIntentを与えることによって、あなたはそれをあなたが指定した操作を実行する権限を付与されていることを...心に留めておく必要があります。
それは私が長い間読んだ後学んだことです。
A PendingIntentラップ一般的なテント。 例えばの場合:
あなたの音楽アプリの通知は、あなたならば、音楽を一時停止/再生することはできません あなたの音楽アプリので、送信、放送に
PendingIntent
を与えていません 通知アプリREAD_EXTERNAL_STORAGE
権限を持っています しません。通知は、(それは外国のアプリですので)システムサービスです。
その名が示すように.. PendingIntent
あなたは(いくつかの時間後にそれを行う)ことを保留することができます。これは、他の意図..itがあなたに代わって実行するためにいくつかの他のアプリにあなたのタスクを与える方法があるように動作します。
A 保留意 処理ではない。でき渡ししますの将来の趣旨を別のアプリケーションすることへの応用を実行する意思としてかった場合と同じアクセス権として申請してあるかないとお客様のものが目的であっメソッドが呼び出されます。
このurlに直接アクセスいただき、外国出願、外国のアプリケーションを使用してアプリケーションのアクセス権を実行した所定のコードです。
場合、外国出願、意図、その応用に送信/放送の意図やりくりは夫婦で別にされていま、その実行の意図を自分のアクセス権を表します。だけではなく、外国のアプリケーションでは、保留中の意図を作成して、自分自身の許可を申請実行に含まれる意図を使用する場合。
を放送を保留意いただくようになるPendingIntentよPendingIntent.getBroadcast().のような活動を介して懸案の意図を受け取った活動によPendingIntent.getActivity().
この意思アクションを実行するものとなります。それを考える"を意した。の理由で必要が意図を作成する必要があ開始から有効な文脈でのお申し込みがある場合は、気予測を算出するのに使用時に実行したいのですが技術的には、アプリケーションの外部のコンテキストに共通するの例を立ち上げ活動からの通知またはBroadcastReceiver.
をPendingIntentを利用する打上げ、活動をしているコンテキストから内側に別の活動又はサービス)を渡すことができるオブジェクトの周りには何か外するために、開始部分のお申し込みを行うことができる。
A PendingIntentを提供する手段への応用であっても、後工程終了します。その重要なものを作成したのPendingIntentが殺害されており、その意思できます。説明の趣旨及び目標の行動を実行します。このクラスのインスタンスが作成されたgetActivity(コンテキスト,int,Intent,int)getBroadcast(コンテキスト,int,Intent,int)、getService(Context,int,Intent,int);返されたオブジェクトを渡し、他のアプリケーションできるようにするに記載のお客様の代わりとなります。
と言えるでしPendingIntentるほかのアプリケーションで付与する権利の操作を行ないとして指定された場合、他のアプリケーションした(同一の権限とアイデンティティ).などに注意が必要かを構築するPendingIntent:よく、例えば、ベース意しておきましては、コンポーネント名を明示的に設定を一つの自分の部品についてアフターサービスについては、最終的に送ります。
A PendingIntent自体は単なる参考にトークンのシステムを記述するのに使用されたデータを取得します。この場合でも、その所有する申請のプロセスが殺害され、PendingIntentそのまま使用可能からその他のプロセスを与えられています。場合、アプリケーションを作成し後の再取得します同じ種類のPendingIntent(同じ動作と同じ意図-行動データの種類、成分、同じフラグ)を受けPendingIntentを代表する同じトークンの場合の有効期限が切れていないことで、このように通話解除()を削除します。
テント保留中の特定の作品を行うために、他のアプリケーションへのすべてのアクセス権を提供意思です。主な活動が破壊されると、AndroidのOSはそれから許可を取り戻します。