如何在Android中在一个应用程序的范围内打开另一个应用程序?

3

如何在Android内部应用程序中打开另一个应用程序?即类似于HTML中iframe的功能。


无法做到。如果可能的话,安全性将会受到损害。 - Vladyslav Matviienko
一些手机/应用程序具有浮动窗口或并排支持,但是肯定不可能像 iframe 那样。 - OneCricketeer
3个回答

1
你基本上不能这样做,因为这违反了Android的规则。你所能做的最多就是在应用程序中打开一个网页。这可以使用webView完成。通过在Webview的xml文件中设置Webview的边界,您可以控制屏幕的边界。
public class WebViewFragment extends Fragment {

    public static final String ARG_SECTION_NUMBER = "section_number";

    public WebViewFragment() {

    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View mainView = inflater.inflate(R.layout.fragment_facebook,
                container, false);
        WebView webView = (WebView) mainView.findViewById(R.id.webView1);

        webView.setWebViewClient(new MyWebViewClient());
        webView.getSettings().setSupportZoom(false);
        webView.getSettings()
                .setJavaScriptCanOpenWindowsAutomatically(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.loadUrl(""); //URL needs to be entered in this line

        return mainView;
    }
}

希望这有所帮助 :)

1
这是由于安全原因而不可能的。之前的Android版本允许使用系统级权限(大多数开发人员永远不会使用的权限),但很少被使用,据我所知,在SDK中已不再存在。
一些制造商实现了额外的功能,如三星的Mini应用程序(如果我记得名字正确),可以在其他应用程序上方的浮动窗口中打开。您还可以使用服务绘制自己的应用程序覆盖另一个应用程序(就像Facebook Messenger一样)。但是,没有办法强制第三方应用程序执行任何这些操作。
然而,每次从您的应用程序打开应用程序时,新应用程序的进程将分配给调用者的进程作为父进程。这使您在某种程度上可以检查是否从您的应用程序打开了此其他应用程序。
此外,打开新应用程序时,您的应用程序不会死亡,而只是“在其下方”。如果您需要来自其他应用程序的某些数据,则可以启动它 forResult 。这样,其他应用程序将“知道”您正在等待其定义的结果,因此它将处理一些数据并将其传递回您的应用程序(在其他应用程序准备好结果后,您的应用程序将重新出现)。

0

如果在AndroidManifest.xml(在activity元素内部)中声明活动时使用android属性android:launchMode="singleTask",则可能是可能的。

如果您这样做,如果您最小化应用程序并再次启动它(从后台或从应用程序列表中的应用程序图标),它仍将向您显示新应用程序。

我不确定结果是否符合您的预期效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接