2016-07-09 44 views
0

我是從我的應用程序使用此代碼打開另一個應用:如何在彈出窗口中打開另一個應用程序?

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"))); 
} 

這是工作,但它打開全屏應用程序。我想在一個窗口/彈出窗口中打開它。我怎麼做?

回答

0

目標活動應該支持彈出模式,如果支持,你應該把設置放入一個Bundle對象,並將它傳遞給Intent,然後將startActivity();

1

你似乎只是打開一個Web應用程序。如果是這樣的話,你應該做到以下幾點:

  • 創建WebView
  • 顯示對話框
  • 負載在url對話框對話框的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> 

裝入網址:

對話框佈局(從回答上面提到的問題,借用)在Dialog的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(); 
     } 
    }); 
+0

只有在手機中不存在應用/軟件包「com.package.address」時,纔會打開網頁。我需要的應用程序打開窗口/彈出窗口,而不是網絡視圖。 –

+0

對於這個問題,請參考@CommonsWare的答案 – AndroidMechanic

0

在Android N上,如果用戶已將該設備置於多窗口模式,您可以嘗試將其他活動啓動到單獨的窗口中。但是,您無法保證這會起作用,因爲其他應用程序的開發人員必須同意。

在Android N之前,您不能將另一個應用程序打開到任何類型的彈出窗口,除非該應用程序具有某些特定的API。

相關問題