很多时候我们在开发中为了满足程序的特别要求,往往一个程序会分解为多个apk,启动其他程序的程序我这里暂且称之为主程序,被启动的程序我这里暂且称之为子程序。通常主程序通过ComponentName指定要子程序被标记为
那么究竟要如何做才能达到既能被主程序启动,又能隐藏起来呢,其实很简单,下面就是实现的方法:
在manifest的入口activity里面intent-filter中设置元素。
比如:
注意,android:scheme是大小写敏感的,必须以小写字母开头
也就是这个MainActivity可以响应Uri为com.android.example://AuthActivity的特定 Intent
但是为什么加入这个之后app就不显示图标了呢?
因为我们把app的入口Activity申明为由接收隐匿的Intent来启动,这样自然也就不会显示图标了。
好了,如果需要显示图标的话而且也必须响应上述Uri的话,那么我们可以在该Activity中再加入一个intent-filter标签,将data元素移到新建的标签中。这样应用既可以显示图标又可以响应特定的Uri了。
//假设有程序A调用程序B,程序B图标隐藏不可见
则有:程序A中:
- public
void starAct() - {
-
Intent intent = new Intent( ); -
ComponentName cn = new ComponentName("com.key.poc", "com.key.poc.MainActivity"); -
intent.setComponent(cn); -
Uri uri=Uri.parse("com.key.poc.MainActivity");//此处应与B程序中Data中标签一致 -
intent.setData(uri); -
startActivity(intent); - }
则程序B中Mainifest.xml配置为:
-
android:name=".MainActivity" -
android:label="@string/app_name" > -
-
"android.intent.action.MAIN" /> -
-
-
android:host="MainActivity" -
android:scheme="com.key.poc" /> -
-