我的申请表中有以下内容(com.para.app1
):
<com.para.app2.MyKeyboardView
...
这是一个自定义视图。实现类(即MyKeyboardView
)在另一个已安装在我的设备上的应用程序(com.para.app2)中定义。
虽然我在layout.xml (that's "com.para.app2.MyKeyboardView")
中使用了完全限定的类名,但每次运行我的应用时,ClassNotFoundException
都面临MyKeyboardView
。
有什么想法吗?
答案 0 :(得分:0)
只是为了让您了解错误,问题是您的应用程序正在自己的进程和VM实例中运行。
现在回答你的问题,这是有可能的,但是花时间这么做是一个愚蠢的想法,因为它可能会对性能产生重要影响,无论哪种方式你都可以通过制作这两个应用来实现它共享相同的过程(如果两个应用程序仅使用相同的密钥签名,则可以实现)但我强烈建议您在两个应用程序中使用该类,并避免应用程序上出现所有无用的重载。
无论如何,如果两个应用程序都使用相同的进程,只要两个应用程序使用相同的共享用户ID,您就可以使用Context.createPackageContext()为其他应用程序实例化一个包,然后您可以从上下文中获取ClassLoader实例化你想要的任何类。
问候!
答案 1 :(得分:-1)
没有。您必须拥有应用在apk中使用的所有类。在另一个apk中运行代码的唯一方法是通过Intent。当然,你不能使用Intent来制作视图。