如何在弹出窗口中打开另一个应用程序?

时间:2016-07-09 18:38:46

标签: java android

我正在使用此代码从我的应用中打开另一个应用:

Uri uri = Uri.parse("http://url_to_app's_website");
Intent in = new Intent(Intent.ACTION_VIEW, uri);
in.setPackage("com.package.address");

try {
    startActivity(in);

} catch (ActivityNotFoundException e) {

    startActivity(new Intent(Intent.ACTION_VIEW,
    Uri.parse("http://url_to_app's_website")));
}

这是有效的,但它会全屏打开应用程序。我想在窗口/弹出窗口中打开它。我该怎么做?

3 个答案:

答案 0 :(得分:1)

您似乎只是打开一个网络应用程序。如果是这种情况,您应该执行以下操作:

  • 使用WebView
  • 创建对话框
  • 显示对话框
  • 在对话框webView
  • 中加载网址

请参阅this SO Question,它提供了一种方法。

以下代码可以满足您的需求: (借鉴了上述问题的答案)

对话框布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
>
    <WebView
        android:id="@+id/webview"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
</LinearLayout>

在对话框的webView中加载您的网址

final TextView seeMonthlyBill = (TextView) parentLayout
            .findViewById(R.id.my_ac_my_service_timewarnercable_link);
    seeMonthlyBill.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Dialog dialog = new Dialog(getActivity());
            dialog.setContentView(R.layout.web_dialog)
            WebView wb = (WebView) dialog.findViewById(R.id.webview);
            wb.getSettings().setJavaScriptEnabled(true);
            wb.loadUrl("http://www.google.com");
            wb.setWebViewClient(new HelloWebViewClient());
            dialog.setCancelable(true);
            dialog.setTitle("WebView");
            dialog.show();
        }
    });

答案 1 :(得分:0)

目标活动应支持弹出模式,如果支持,则应将设置放入Bundle对象并将其传递给Intent,然后再传递给startActivity();

答案 2 :(得分:0)

在Android N上,如果用户已将设备置于多窗口模式,您可以use FLAG_ACTIVITY_LAUNCH_TO_ADJACENT尝试将其他活动启动到单独的窗口中。但是,您不能保证这会起作用,因为其他应用程序的开发人员必须同意。

在Android N之前,您无法在任何类型的弹出窗口中打开另一个应用程序,除非该应用程序具有某些特定的API。