当前位置: 首页 > 知识库问答 >
问题:

我可以将这两个应用程序(原生和混合)合并到一个应用程序中吗?

太叔鹏云
2023-03-14

我有一个完全使用Android Studio开发的应用程序。我需要创建第二个应用程序,这个我想用phonegapp来完成。这两个应用程序相互关联...所以理想情况下,我想将它们合并到同一个应用程序中...合并并不意味着它们需要一起工作。我希望它们一起下载(作为同一个应用程序),并且能够在应用程序中从一个下载到另一个...所以它们可以完全是两个独立的应用程序,但用户会认为它只是一个应用程序。我希望我让自己很好地理解,混合应用程序使用带有Cordova插件的麦克风。有一次,我很想把它和iframe放在一起,但我们会失去在Android中调用语音识别Google原生的麦克风,将其转换为文本并传递给编辑文本。

所以我的问题是:

  1. 我可以将这两个应用程序(原生和混合)合并到一个应用程序中吗
  2. 在这两种情况下,带有语音识别功能的麦克风能否很好地转换为文本

共有2个答案

夏昊
2023-03-14

1)没有什么能阻止您拥有两个充当一个的应用程序(除了下载部分)。它们可以使用专用的Intents相互“说话”,并使用ContentProviders共享数据。您必须处理一个应用程序已安装而另一个未安装的情况。

2) 在这种情况下,我看不出麦克风有什么特别的问题。

然而,如果我是你,如果可能的话,我会选择使用单一应用。不过,我不确定phonegapp对这种实现的限制是什么。

苏高旻
2023-03-14

是的,设置起来有点痛苦,但我让它正常工作。我没有使用PhoneGap,但我正在使用Construct和Cordova插件,所以它应该是一个类似的设置。

首先,我获取Cordova生成的所有Web文件并将它们放在资产目录中(如果您没有资产目录,您可以在main目录中创建一个)。然后我使用WebView来显示内容:

public class CordovaActivity extends AppCompatActivity {

    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cordova);

        mWebView = (WebView) findViewById(R.id.content);

        WebSettings settings = mWebView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            settings.setAllowUniversalAccessFromFileURLs(true);
        }

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            settings.setMediaPlaybackRequiresUserGesture(false);
        }

        mWebView.loadUrl("file:///android_asset/www/index.html");
    }

    @Override
    public void onResume() {
        super.onResume();
        if(mWebView != null) {
            mWebView.resumeTimers();
            mWebView.onResume();
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if(mWebView != null) {
            mWebView.pauseTimers();
            mWebView.onPause();
        }
    }

}

setJavaScriptEnable()setDomStorageEnable()setAllowUniversalAccessFromFileURLs()设置都必须设置为true,否则内容将无法加载。最后一个设置,setMediaPlayback必备的UserGesture(),是允许音频播放所必需的。

不过,让Cordova内容与应用程序的其余部分交互需要做更多的工作;您必须使用JavaScriptInterface才能做到这一点。

 类似资料:
  • 我已经开始编写两个web应用程序项目 使用Spring REST API的移动客户端的RESFful API 我的问题是,两个Web应用程序都使用相同的数据库,我认为,而不是有两个Web应用程序,我实际上应该开始这个项目,只使用一个Web应用程序来处理Web和移动客户端的请求。 我现在遇到的问题是,我不知道如何“合并”这两个家伙,以及我是否应该坚持使用Spring RESTAPI,或者是否应该使用

  • 我可以在cordova hybrid应用程序的其中一个页面上添加本地谷歌地图吗? 如果是,请说明如何(在Android和iOS),谢谢!

  • 这是我的聊天应用程序文件代码 这是我的服务器。js文件 在途中。js文件 我在写这段代码 TypeError:对象#在C:\Users\Sanjay1\Desktop\fmodule\login\app\routes没有方法“worker”。js:11:7在路由器的pass(C:\Users\Sanjay1\Desktop\node_modules\express\lib\router\index

  • 我是一名PHP、HTML5、CSS3、Javascript、Jquery、Angular的全栈开发人员,热衷于学习任何新技术 现在,我有了一个混合移动应用程序项目(更简单,只需少量的curd操作和web服务),而且它还将是web应用程序,我需要尽快交付。所以我的问题是为正确的工作选择正确的工具 混合应用程序可以使用 平台:Phonegap或cordova,根据我的理解,cordova是Phoneg

  • 执行测试脚本后,我看到控制台“驱动程序null”错误 剧本: 如果我错过了什么,有人能帮忙吗。谢谢,

  • 我有两个查询,它们查看不同的数据库表,并从每个表中的JSONB列中查找格式为[“tag1”、“tag2”、“tag3”]等的项。查询的目的是填充预测性下拉列表,即如果列表包含“dog”且用户类型为“d”,则应返回“dog”。这些查询中的每一个都单独工作,我可以很容易地将它们组合成一个JOOQ查询?