首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android - Apk内部APK

Android - Apk内部APK
EN

Stack Overflow用户
提问于 2019-06-04 22:09:43
回答 3查看 340关注 0票数 0

假设我有两个应用程序给我的学校:

student.apk:学生登录,检查成绩,检查课堂时间,做很多事情。

teacher.apk:教师登录、学分、出席名单等。

是否有可能只创建一个apk,使用登录屏幕,检测它是学生还是教师,而不是使用正确的apk?

基本上,我要问的是,我是否可以将这两个apks (学生和教师)放入一个代码(login.apk)中。

这些应用程序是完全不同的,很难合并成一个,这就是为什么我想在一个简单的"login.apk“中启动它们的原因。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-04 22:25:41

不确定这是否有可能。但我相信更好的方法是使用动态交付来实现这一目标。将教师和学生捆绑为动态特征模块,并根据登录状态在运行时动态加载它们。

您可以在这里找到更多信息:https://developer.android.com/studio/projects/dynamic-delivery

这里还有一个教程:https://medium.com/mindorks/dynamic-feature-modules-the-future-4bee124c0f1

票数 5
EN

Stack Overflow用户

发布于 2019-06-04 22:30:36

是的应该是可能的。不过我还没试过呢。制作第三个应用程序(login.apk),它包含student.apk和teacher.apk。一旦用户在login.apk中登录,正确的子apk就可以从项目中导出/保存到设备内部/外部存储( login.apk所需的读和写权限),然后打开login.apk启动导出的apk,->包安装程序就会安装它(用户交互需要)。

票数 0
EN

Stack Overflow用户

发布于 2019-06-04 22:31:24

我建议使用意图:概念很简单,将登录部分放在两个应用程序中的一个(在本例中,它将是学生应用程序)。尝试登录时,取决于服务器的响应,如果它是学生帐户,那么它将简单地登录,否则,如果它是教师帐户,您将验证是否安装了教师应用程序。如果安装了它,您只需启动它并在意图中传递所需的参数,否则,打开play商店并安装所需的应用程序。以下是这方面的代码:

代码语言:javascript
复制
    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);
    }

在教师应用程序中,您需要拦截此意图及其参数:

代码语言:javascript
复制
    String param= (String) getIntent().getSerializableExtra("some_parameter_name");

然后,您可以将所需的变量保存在共享首选项中,以确保用户保持连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56451967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档