今本是AAA(前者)項目要開啟一個應用,調用BBB(後者),
代碼:(intent.setComponent(new ComponentName("com.lius.app","com.lius.app.MainActivity"));
startActivity(intent);),
本來一切正常,可是我不想讓使用者直接進入BBB程式,所以把後者的入口配置(infilter-filter)刪除,
結果AAA調BBB拋如下異常“見異常_1”,一直以為是許可權問題,後在網上找資料發現如果Activity的
intent-filter 配置改成:
<intent-filter><action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>居然可以通過,且沒有多餘的apk。
難道這說明如果一個項目沒有找到入口的配置:
<action android:name="android.intent.action.Main" />
<category android:name="android.intent.category.LUNCHER" />
</intent-filter>就不會被系統納入應用程式的列表
異常_1:
ERROR/AndroidRuntime(2426): java.lang.SecurityException: Permission Denial:
starting Intent { act=android.intent.action.VIEW flg=0x4000000 cmp=com.lius.app/.MainActivity (has extras) }
from ProcessRecord{408fa250 2426:com.fronware.vclient.activity/10058} (pid=2426, uid=10058) not exported from uid 10060
本想把兩個應用打成一個apk,之前聽說build path的方式可以在打包時封裝到同一個apk中,結果發現高興太早了,在點擊運行時,
發現由於build path了,所以被build path 的項目也會被編譯並安裝到裝置上,只是此應用沒有入口(沒有配置android.intent.action.Main
為action和android.intent.category.LUNCHER為category的原故),上面的配置的確可以讓某個應用沒有入口,所以以為在同一個apk中,
所謂希望越大,失望就越大。打包完再拿apk安裝時才發現悲劇了。
如果有哪位同僚有辦法,麻煩告訴我一聲。如果也沒有,哪就組裝代碼吧