我正在处理将卡在其他人的应用程序中的代码。我有两个活动都播放视频视图(行为略有不同)。但是,我绝对不想依赖其他人手动声明我创建的 AndroidManifest.xml 活动。(一些开发人员可能只是忘记在他们的清单中声明它)
所以本质上,我希望能够告诉 android 加载一个未在 Manifest 中声明的活动。我该怎么做呢?
这是我的想法:
1)我尝试子类化声明的活动(声明的活动指的是它在AndroidManifest中声明)。然而,调用这个子类会引发 aActivityNotFoundException
并不奇怪。
2)我可以通过静态方法传递静态视图,例如:
public class Blah extends Activity {
private static VideoView badIdea;
public void setBadIdeaView(VideoView vv) { badIdea = vv; }
//... start it up as usual, but `badIdea` is now configured
}
但我真的不想这样做,因为视图会保留上下文,并且我不想要对活动上下文的静态强引用。
3) 有人知道 Android 是如何实际加载您的活动的吗?我猜Android使用反射来打开类的实例......但是......我的意思是,为什么必须在Manifest中声明活动?这是出于安全目的,以防止不良的动态类加载吗?这是一个可能的解决方案吗?
谢谢