只有当Activity向外声明了自己是可以处理某些intent action时,第三方app才能通过intent去启动它

https://segmentfault.com/q/1010000003749035

只有当Activity向外声明了自己是可以处理某些intent action时,第三方app才能通过intent去启动它。
通过配置文件中的intent过滤器来声明:

<activity android:name=".Activity_A" >
    <intent-filter >
        <action android:name="android.intent.action.VIEW"/>
    </intent-filter>
</activity>

当知道了package name和class name,可以这样去启动第三方的activity:

Intent i = new Intent("android.intent.action.VIEW");
String pkg = "me.li2.test";
String cls = "me.li2.test.Activity_A";
i.setComponent(new ComponentName(pkg, cls));
startActivity(i);

这样做是没问题的。但假如没有在manifest中声明,startActivity将导致崩溃。你可以写两个app做个测试,添加、去掉intent声明。

posted @ 2017-10-29 22:06  sky20080101  阅读(65)  评论(0)    收藏  举报