我们知道调起另外一个组件一般有两种方式,显式的和隐式的。显式的会直接指定要启动的组件,而隐式的则通过匹配条件,调起匹配的组件。
是否可以任意的调用另外一个apk的Activity?
答案当然是否定的,由于android权限的限制,不可能任意的调起另一个apk的指定Activity。
Activity Service 那么调起的条件是什么?
需要在被调起的Activity所在的注册项配置中有exported标识,或者两个apk shareUid。
Intent Filter
Intent Filter 是一个过滤机制,它根据Intent的各种属性作为筛选依据,通过了测试该Intent才会到达组件。Intent Filter一般在注册Activity 、 Service 和 Broadcast Receiver的时候声明。
举一个例子:
如上各filter之间是或的关系,根据优先级的大小决定匹配的顺序。
代码示例
显式的调用
startActivity(new Intent(SplashActivity.this, MainActivity.class));
隐式的调用
Intent intent = new Intent();
//设置 Intent 的动作
intent.setAction("com.great.activity_intent.Intent_Demo1_Result3");
Bundle bundle = new Bundle();
bundle.putString("id", strID);
intent.putExtras(bundle);
startActivity(intent);
参考链接
这是一个简单的使用问题,但我需要明确的知道答案。