<activity android:name=".MyActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" > </action> </intent-filter> </activity>
上記がないと
Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cmp=jp.hotaka.hoge/.MyActivity (has extras) } from ProcessRecord{44ff5c30 891:jp.hotaka.hogehoge/10047} (pid=891, uid=10047) requires null
が発生
OSのタスク履歴からタスクを起動するアプリを作った事があるのですが、
どうしてもSecurityExceptionが発生するタスクがあります。
色々と見当をつけてみたのですが原因が分かりません。
下記(1)、(2)は予想、(3)は実際の動作です。
(1)インテントでExtra情報を保持するタスクで発生?
(2)マニフェストでActivityにandroid:enabled=”false”が指定されている?
(3)ホームボタン長押しのタスク履歴からは起動可能
現状startActivity()でSecurityExceptionをキャッチしたら諦めてますが、
上記について何かご存じないでしょうか?
(2)のandroid:enabled=”false”はandroid:exposed=”false”の誤りでした。
とくに分かりませんが…
ご自身でインストールしたパッケージであれば、パッケージファイル(内容はZIP形式)内のマニフェストの違いなど確認してみたらいかがでしょうか?
特定のapkファイルをバックアップしてマニフェストファイルを
デコードして確認してみましたが、(2)は見当違いでした。
(1)はIntent#getExtrasを取得してみましたが、他の起動可能な
タスクでも取得できるものがあり、これも見当違いでした。
となると明確な違いが(3)のみとなりますが、
もう少しソースコードを追ってみたいと思います。