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

Android 我可以将这两个应用程序(本地和混合)合并到一个应用程序中吗?,android,cordova,phonegap-build,Android,Cordova,Phonegap Build,我有一个完全用Android Studio开发的应用程序。我需要创建第二个应用程序,这一个我想用phonegapp完成。这两个应用程序相互关联。。。因此,理想情况下,我想在同一个应用程序中结合两者。。。我所说的联合并不意味着他们需要合作。我想他们一起下载(作为同一个应用程序),并能够从一个到另一个应用程序与应用程序。。。因此,它们可以完全是两个独立的应用程序,但用户会认为它只是一个应用程序。我希望我能充分理解自己,这款混合应用程序使用带有Cordova插件的麦克风。有一段时间,我曾想把它和ifr

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

所以我的问题是:

  • 我可以将这两个应用程序(本地和混合)合并到一个应用程序中吗
  • 在这两种情况下,带有语音识别功能的麦克风能否很好地转换为文本
  • 1) 没有什么能阻止你将两个应用程序合二为一(除了下载部分)。他们可以使用专用的
    Intent
    s相互“交谈”,并使用
    ContentProvider
    s共享数据。如果一个应用程序安装了,而另一个应用程序没有安装,你必须处理好这种情况

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

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

    1)没有任何东西可以阻止您将两个应用程序作为一个应用程序(下载部分除外)。他们可以使用专用的
    Intent
    s相互“交谈”,并使用
    ContentProvider
    s共享数据。如果一个应用程序安装了,而另一个应用程序没有安装,你必须处理好这种情况

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


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

    是的,设置起来有点困难,但我已经让它工作了。我没有使用PhoneGap,但我使用的是Construct和Cordova插件,所以应该是类似的设置

    首先,我获取了Cordova生成的所有web文件,并将它们放在
    assets
    目录中(如果您没有assets目录,可以在
    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();
            }
        }
    
    }
    
    setJavaScriptEnabled()
    setDomStorageEnabled()
    setAllowUniversalAccessFromFileURLs()
    设置都必须设置为
    true
    ,否则将无法加载内容。允许播放音频需要最后一个设置,
    setMediaPlaybackRequireservesture()


    不过,要让Cordova内容与应用程序的其余部分进行交互,还需要做更多的工作;您必须使用a才能执行此操作。

    是的,设置起来有点麻烦,但我已经让它工作了。我没有使用PhoneGap,但我使用的是Construct和Cordova插件,所以应该是类似的设置

    首先,我获取了Cordova生成的所有web文件,并将它们放在
    assets
    目录中(如果您没有assets目录,可以在
    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();
            }
        }
    
    }
    
    setJavaScriptEnabled()
    setDomStorageEnabled()
    setAllowUniversalAccessFromFileURLs()
    设置都必须设置为
    true
    ,否则将无法加载内容。允许播放音频需要最后一个设置,
    setMediaPlaybackRequireservesture()


    不过,要让Cordova内容与应用程序的其余部分进行交互,还需要做更多的工作;您必须使用a才能这样做。

    我怀疑您是否能做到这一点。每个应用程序都有一个沙箱,但在你的情况下,你不只是想在两个应用程序之间进行通信,而是想在同一个沙箱下使用不同的技术运行。除非你想通过以下步骤:在Phonegap中生成aar文件,并将其用作android应用程序中的库——我怀疑你是否能做到这一点。每个应用程序都有一个沙箱,但在你的情况下,你不只是想在两个应用程序之间进行通信,而是想在同一个沙箱下使用不同的技术运行。除非,否则,您希望完成以下操作:在Phonegap中生成aar文件,并将其用作android应用程序中的库-此处