android:launchMode については以前のエントリ 「Android Activity, Task, Stack, Launch mode」 にも少し書いたのですが、それぞれの違いについてもう少し詳しく説明したいと思います。 上記のエントリで私がまとめた launchMode の表を再掲します。 この表に載っている 「インテントに応答するアクティビティをどのタスクに保持するか」 「アクティビティのインスタンスを複数生成できるか」 「インスタンスに他のアクティビティを含めることができるか」 「クラスの新しいインスタンスを起動して新しいインテントを処理するかどうか」 について順番に説明します。 ■ インテントに応答するアクティビティをどのタスクに保持するか ここに アプリX があるとします。 このアプリは ACTION_SEND を処理できる Activity A を持っています。
AndroidのフレームワークにはAndroidを強く特徴付けるIntentという仕組みがある。 IntentはActivityやServiceといった実行単位のコンポーネントを起動する場合に利用される。 プログラマはstartActivityやstartServiceといった関数を用いてActivityとServiceの起動を命ずるが、このとき引数にIntentを使うことにより実行対象を指定する。 Intentが優れているのはこの指定方法にある。 Intentは明示的にクラス名を指定することにより明らかに実行されるコンポーネントを指定することが可能だ。 しかし、より優れたIntentの利用方法は暗黙的なIntentの利用である。 暗黙的なIntentを用いることにより、直接実行コンポーネントを指定する必要がなくなる。 これによりコンポーネント間の結合はより緩やかな疎結合となる。 呼出元の
IntentFilterにカテゴリandroid.intent.category.DEFAULTを登録しないと、 暗黙的IntentでActivityを呼び出すことができません。 「そういうものだ」で終わってもいいのですが... なぜわざわざDEFAULTカテゴリを指定しなければならないのか?調査しました。 ディベロッパサイトの-Intents and Intent Filters #Category test-では、 startActivityに渡される暗黙的Intentは、カテゴリ"android.intent.category.DEFAULT" を含んでいるかのように扱われる 旨の記載があります。 http://developer.android.com/guide/topics/intents/intents-filters.html#ifs ここの実装部分を見てみます。 Inte
AndroidアプリケーションはAndroidマーケットからのみではなく、それ以外の手段でも インストールすることが可能です。たとえば、SDカードなどの領域に保存しているapkを アプリケーション上からインストールすることができます。 これによりたとえば、Androidマーケットに公開できないアプリ(アップロード上限を超えてしまうサイズのアプリのような)を公開したい場合や、独自のマーケットで公開したい場合などに利用することが可能です。 詳しい解説は続きからどうぞ。 MIME typeを指定する apkのインストールはMIME typeに application/vnd.android.package-archiveを指定したIntentを発行するだけです。 たとえばSDカード上に保存されているapkをインストールしたい場合には以下のようにします。 String fileName = Env
アクティビティ と タスク と スタック と 起動モード (と ライフサイクル) 開発の基礎のアクティビティとタスク以降 がとっても(日本語が)わかりにくかったので、 私なりの解釈を書くことにしました。 (もしかしたら間違ってるかもしれないよ) なんで、わかりにくいかと言うと、用語の定義がされてないからなんですね。 なので、ちゃんと定義(みたいなの) ・アクティビティ これはいいよね。いわゆる Activity です。 ・ルートアクティビティ タスクを開始するアクティビティのこと。 通常だと、AndroidManifest.xml の タグのなかに <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNC
なんか見つからなかったので作りました。 android.content.pm パッケージの PackageManagerクラスの "queryIntentActivities (Intent intent, int flags)" で取得できます。 こんな感じ PackageManager pm = getPackageManager(); List resolveInfo = pm.queryIntentActivities(new Intent(Intent.ACTION_SEARCH), PackageManager.MATCH_DEFAULT_ONLY); StringBuffer sb = new StringBuffer(); for(int i = 0; i < resolveInfo.size(); i++) { ResolveInfo info = resolveInfo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く