2011-06-20 12 views
0

ここでは奇妙な問題に取り組んでいます。Androidタスクタスクの指定に問題があります。

基本的には、taskAffinityを ""に指定し、launchModeを "singleTask"に指定するアクティビティを持つ1つのアプリケーション(別の開発者が作成)があります。

電話が通知を受け取ると、FLAG_ACTIVITY_NEW_TASKフラグを使用してアプリケーションでアクティビティを起動します。

タスクが存在する場合、自分のアクティビティにその他のアプリケーションのtaskAffinityを持たせたいと思います。

aj.streetPhone.app/.ViewActivity 

しかし、私の活動に私のマニフェストに、私はそのアプリケーションのタスクに私の活動を追加していないようaj.streetphone.appを指定:私はdumpsys activityを行うと

は、私は他の開発者のアプリケーションがTaskRecordがあることがわかります。私は別のパッケージ名を試しましたが、それは動作しているようです。おそらく、タスク名にはパッケージ名(デフォルト)だけでなく、アクティビティも含まれているという事実と関係しています。

マニフェストがそれを受け付けないため、基本的に '/'を使用する際に問題が発生しています。

android:taskAffinity="aj.streetPhone.app/.ViewActivity" <--- does not work! 

私はユニコードで追加された「/」をエスケープしようとしました。助けてください!

アイデア?

答えて

1

タスクアフィニティ(および権限、プロセス、共有ユーザーID、 アクションなど)は、アプリケーションパッケージ名で修飾されていません。それらは 単一文字列であり、多くはグローバルに一意でなければなりません。 「.foo」を追加するだけでは というパッケージは一意にはなりません。別のアプリでは、パッケージ名が より短いか、またはより長いバージョンになり、同じ名前が付けられます。 アフィニティとプロセスの場合、名前に接頭辞「:」を付けて を自分のパッケージ名に追加し、パッケージに固有の名前 を作成することができます。

したがって、タスクアフィニティに一意の文字列を使用する必要があります。

+0

Androidで –

0

/は実際には無効です。

あなたのアクティビティのフルネームはaj.streetPhone.app.ViewActivityです。何らかの形で省略されていない限り(自分のアプリのdumpsys activityは簡単に表示されているようです)ただし、パッケージ名をtaskAffinityの先頭に追加する場合は、コロンを使用するだけです(例: :myAffinity。つまり、taskAffinityはアクティビティの名前ではありません。

私が理解しているように、taskAffinityは、アクティビティがどの「タスク」に属しているかを制御するためのものです。なぜ別のアプリケーションのタスクにアクティビティを張り付けようとしているのかについてはコメントできませんが、をクリアすると、のアフィニティが任意のタスク内にある可能性があります。私はそれを試していませんが、これは、たとえば、あなたのアプリ(あなたのタスク)で最後にアクティブだったアクティビティーに戻るのではなく、前のアクティビティーを前のバックボタンに戻すという結果につながると思います。

(、FYI、chemalarreaは信用を与えることなくから引用された場合)

詳細情報: https://groups.google.com/forum/?fromgroups=#!topic/android-developers/wKwnV1k_96A

ドキュメント:私のtaskAffinity値で、それが拒否されました: '' 私はAを試してみましたhttps://developer.android.com/guide/topics/manifest/activity-element.html#aff

関連する問題