今本是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安装时才发现悲剧了。
如果有哪位同僚有办法,麻烦告诉我一声。如果也没有,哪就组装代码吧