假设我有两个应用程序给我的学校:
student.apk:学生登录,检查成绩,检查课堂时间,做很多事情。
teacher.apk:教师登录、学分、出席名单等。
是否有可能只创建一个apk,使用登录屏幕,检测它是学生还是教师,而不是使用正确的apk?
基本上,我要问的是,我是否可以将这两个apks (学生和教师)放入一个代码(login.apk)中。
这些应用程序是完全不同的,很难合并成一个,这就是为什么我想在一个简单的"login.apk“中启动它们的原因。
发布于 2019-06-04 22:25:41
不确定这是否有可能。但我相信更好的方法是使用动态交付来实现这一目标。将教师和学生捆绑为动态特征模块,并根据登录状态在运行时动态加载它们。
您可以在这里找到更多信息:https://developer.android.com/studio/projects/dynamic-delivery
这里还有一个教程:https://medium.com/mindorks/dynamic-feature-modules-the-future-4bee124c0f1
发布于 2019-06-04 22:30:36
是的应该是可能的。不过我还没试过呢。制作第三个应用程序(login.apk),它包含student.apk和teacher.apk。一旦用户在login.apk中登录,正确的子apk就可以从项目中导出/保存到设备内部/外部存储( login.apk所需的读和写权限),然后打开login.apk启动导出的apk,->包安装程序就会安装它(用户交互需要)。
发布于 2019-06-04 22:31:24
我建议使用意图:概念很简单,将登录部分放在两个应用程序中的一个(在本例中,它将是学生应用程序)。尝试登录时,取决于服务器的响应,如果它是学生帐户,那么它将简单地登录,否则,如果它是教师帐户,您将验证是否安装了教师应用程序。如果安装了它,您只需启动它并在意图中传递所需的参数,否则,打开play商店并安装所需的应用程序。以下是这方面的代码:
try {
//launch the app if it exists
Intent intent = new Intent("teacher app signature here");
intent.putExtra("some_parameter_name", "parameter value");
} catch (Exception e) {
// here is the case where the app is not installed
Uri marketUri = Uri.parse("market://details?id=teacher app signature here");
Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri);
startActivity(marketIntent);
}在教师应用程序中,您需要拦截此意图及其参数:
String param= (String) getIntent().getSerializableExtra("some_parameter_name");然后,您可以将所需的变量保存在共享首选项中,以确保用户保持连接。
https://stackoverflow.com/questions/56451967
复制相似问题