2015-04-09 22 views
13

Herhangi bir aygıtta JSAlert gösterilmiyordu.WebView, Lollipop aygıtlarında JSAlert'ı göstermiyor

webView.setWebChromeClient(new WebChromeClient() { 

      @Override 
      public boolean onJsAlert(WebView view, String url, String message, 
        JsResult result) { 
       return super.onJsAlert(view, url, message, result); 
      } 

      @Override 
      public boolean onJsPrompt(WebView view, String url, String message, 
        String defaultValue, JsPromptResult result) { 
       return super.onJsPrompt(view, url, message, defaultValue, 
         result); 
      } 

     }); 

Şimdi bütün ön Lollipop cihazlarda çalışıyor: Ve sonra bir WebChromeClient ayarlayın. Ve Lollipop cihazlarında herhangi bir uyarı göstermiyor.

Logcat "Bir iletişim kutusu oluşturulamıyor, WebView içeriği bir Etkinlik değil" diyor.

+0

See [bir dışındaki bir Web görünümü bir AlertDialog gösteriliyor bildirilen sorunu kontrol Aktivite] (http://stackoverflow.com/questions/26044179/showing-an-alertdialog-from-a-webview-outside-of-an-activity) muhtemelen büyük olasılıkla –

+0

@ ρяσѕρєяK 'a geldim. Yardım etmedi. Aynı sonucu verir. Aslında, gerçekten çağrılmış olup olmadığını kontrol etmek için JSAlert yöntemine kesme noktaları koyuyorum. Ve yapmadı. –

+0

@SeshuVinay Hata ayıklayıcısını 'return super.onJsPrompt (görünüm, url, ileti, defaultValue, sonucu); Varsa, süper çağrıyı kaldırın ve dış etkinliğinizin bağlamını kullanarak özel bir İletişim Kutusu yerleştirin. – bonnyz

cevap

0

Bu Web görünümündeki içinde açılması için JScript kullanıyorsanız

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

ilk izni gerektiren gerekiyor. Sen

webView.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
      mResult = result; 
      AlertDialog dialog = new AlertDialog.Builder(MyService.this) 
        .setTitle("test Dialog") 
        .setMessage("This is test dialog") 
        .setOnCancelListener(new CancelListener()) 
        .setNegativeButton("Cancel", new CancelListener()) 
        .setPositiveButton("Ok", new PositiveListener()) 
        .create(); 
      dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
      dialog.show(); 

      return true; 
     } 
    }); 

Son bir şey yukarıdaki bu İhtiyacınız çalışmazsa Web görünümündeki bir iletişim kutusu oluşturmak için jscript

<input type="button" value="Display dialog" onClick="displayDialog()" /> 
    <script> 
     function displayDialog() { 
      //alert("Javascript Dialog"); 
      Android.showDialog(); 
     } 
    </script> 
</input> 

VEYA çok basit bir yolu bu yazma gibi bu kodu Dialog oluşturabilir Layout'ta özel diyalogu pro-grammatik olarak oluşturmak ve görünümünüzü buna eklemek için.

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT 
       WindowManager.LayoutParams.TYPE_PHONE, 
       0, 
       PixelFormat.TRANSLUCENT); 

params.gravity = Gravity.CENTER; 

windowManager.addView(yourView, params); 
+1

bunu nasıl uygulayabiliriz. işte sorun bu. Bu js Fonksiyonu eklemek için yerel bir dosya değil. Yerel dosya için değil, web görünümü için uyarı penceresini etkinleştirmem gerekiyor. –

+0

Tam olarak. Benimki bir ödeme ağ geçidinde gelen bir banka sayfası. Benim için de –

+0

'u aynı @SeshuVinay –

0

Lütfen WebView'u oluşturmak için kullandığınız kodu paylaşın. Bir Etkinlik yerine bir Hizmet veya Uygulama Bağlamı ile oluşturduğunuza benziyor.

Lütfen bir Etkinlik bağlamı kullanmayı deneyin.

+1

https://code.google.com/p/chromium/issues/detail?id=447607'de yalnızca etkinlik bağlamını kullanmadan mükemmel bir şekilde görünür. , bu sorun sadece android sistem web görünümünde en son güncellemede var, bu sorun için çözüm arıyorum. –

+0

Ikinci @TamilselvanKalimuthu. Sorun prelollipop cihazları ile.En son android bir hata gibi görünüyor. –

+0

Anladığım için teşekkürler. Google Play Store'daki en yeni beta sürümü ile deneyebilirsiniz mi? Ayrıntılar için lütfen https://plus.google.com/u/0/communities/105434725573080290360 adresini ziyaret edin. – ksasq

İlgili konular