2013-05-11 10 views
5

मैं वेबदृश्य के साथ एक ऐप विकसित कर रहा हूं लेकिन मुझे नहीं पता कि जावास्क्रिप्ट में अलर्ट संवाद दिखाने के लिए जावास्क्रिप्ट को कैसे सक्षम किया जाए।वेबव्यू में एंड्रॉइड अलर्ट संवाद कैसे दिखाएं?

मैंने कभी यह कोशिश की लेकिन यह मेरे लिए काम नहीं है। सबसे पहले, मैंने वेबव्यू और वेबसेटिंग ऑब्जेक्ट बनाया, फिर निम्न पैरामीटर सेट करें।

webSettings.setJavaScriptEnabled(true); 

    webSettings.setBuiltInZoomControls(true); 

    mWebView.requestFocusFromTouch(); 
+0

http://stackoverflow.com/questions/8634319/how-to-set-different -title-for-alert-dialog-when-webview-page-loaded – Raghunandan

+0

@ गणेश: आप एंड्रॉइड मूल अलर्टडिअलॉग (http://developer.android.com/reference/android/app/AlertDialog.html) दिखाना चाहते हैं। ? –

उत्तर

16

आपके कोड के अनुसार मैंने सोचा था कि आप वेबव्यू में जावास्क्रिप्ट को सक्षम करने के लिए निम्न सेटिंग वेबव्यूक्लिएंट और वेबक्रोमक्लिएंट सेट नहीं करते हैं।

mWebView.setWebViewClient(new WebViewClient()); 
mWebView.setWebChromeClient(new WebChromeClient()); 

फिर आप निम्न कोड के साथ अपना एचटीएमएल पेज लोड करते हैं।

mWebView.loadUrl("file:///android_asset/"+Your_Html_Page); 

और यह आपके वेबव्यू में एचटीएमएल हिस्सा है।

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
    function myFunction() 
    { 
     alert("Hello! I am an alert box!"); 
    } 
    </script> 
</head> 
<body> 

<input type="button" onclick="myFunction()" value="Show alert box" /> 
</body> 
</html> 

यह मददगार हो सकता है।

+0

धन्यवाद .... यह मेरे लिए काम करता है !!!! – Vasu

+0

बिल्कुल सही। इसने एक मुद्दा हल किया जो मुझे दिखाने के लिए जेएस अलर्ट प्राप्त करने के साथ था, बहुत बहुत धन्यवाद। – Railto

+0

जब मैं उपर्युक्त दो पंक्ति जोड़ता हूं तो यह काम कर रहा है। लेकिन मैं चेतावनी संदेश के शीर्ष पर यूआरएल कैसे हटा सकता हूं। – gnganpath

0

इस कोड का प्रयास करें:

public OnClickListener imageButtonViewOnClickListener = new OnClickListener() { 
public void onClick(View v) { 

LayoutInflater inflater = LayoutInflater.from(MyActivity.this); 

// error here 
View alertDialogView = inflater.inflate(R.layout.alert_dialog_layout, null); 

WebView myWebView = (WebView) findViewById(R.id.DialogWebView); 
myWebView.loadData(webContent, "text/html", "utf-8"); 
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
builder.setView(alertDialogView); 

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}).show(); 
} 
}; 

एक्सएमएल:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="vertical"> 

<WebView android:id="@+id/DialogWebView" android:layout_height="wrap_content" 
android:layout_width="fill_parent" android:layout_marginLeft="20dip" 
android:layout_marginRight="20dip" 
android:textAppearance="?android:attr/textAppearanceMedium" /> 
0

यू WebView में एक घटना से एक देशी AlertDialog दिखाना चाहते हैं, तो यह क्या यू Binding JavaScript code to Android code की तलाश में आर।

नमूना कोड इस लिंक पर उपलब्ध है .. उदाहरण के लिए एक टोस्ट दिखाता है ..u एक अलर्टडिअलॉग इंस्टेड दिखा सकता है।

2

यदि आप जावास्क्रिप्ट alert फ़ंक्शन से संदेश बॉक्स प्रदर्शित करना चाहते हैं तो WebChromeClient का उपयोग करना अनिवार्य नहीं है। आप अपने जावास्क्रिप्ट कोड और क्लाइंट-साइड एंड्रॉइड कोड के बीच इंटरफेस बना सकते हैं।

नीचे दिए गए उदाहरण में अपना JavaScript कोड बजाय जावास्क्रिप्ट का alert() समारोह का उपयोग करने का एक Dialog प्रदर्शित करने के लिए, अपने Android कोड में एक विधि कॉल कर सकते हैं। मैंने पाया कि यह अलर्ट प्रदर्शित करने का सबसे सुविधाजनक और व्यापक रूप से समर्थित तरीका है।

फ़ाइल:: WebAppInterface.java

import android.content.Context; 
import android.webkit.JavascriptInterface; 

public class WebAppInterface { 
    Context mContext; 

    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a Message box from the web page */ 
    @JavascriptInterface 
    public void androidAlert(String message) { 
     DialogBox dbx = new DialogBox(); 
     dbx.dialogBox(message, "I get it", "",mContext); 
    } 
} 

फ़ाइल: DialogBox.java

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.Context; 
import android.content.DialogInterface; 

public class DialogBox {  
    public boolean dialogBox(String msg, String okButton, String cancelButton, final Context activity) { 
     Dialog v = null; 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity); 
     alertDialogBuilder.setMessage(msg); 
     if (okButton != "") { 
      alertDialogBuilder.setPositiveButton(okButton, 
        new DialogInterface.OnClickListener() {  
         @Override 
         public void onClick(DialogInterface arg0, int arg1) { /**/ } 
        }); 
     }  
     if (cancelButton != "") { 
      alertDialogBuilder.setNegativeButton(cancelButton, 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface arg0, int arg1) { /**/ } 
        }); 
     } 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
     return true; 
    }  
} 

इसके बाद, बाँध

अपने Android एप्लिकेशन में निम्नलिखित वर्गों को शामिल करेंजावास्क्रिप्ट के लिए 10 वर्ग कि addJavascriptInterface() के साथ अपने WebView में चलता है और इंटरफेस Android नाम:

WebView mWebView = (WebView) findViewById(R.id.webview); 
mWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 

यह WebView में चल रहा जावास्क्रिप्ट के लिए Android कहा जाता है एक अंतरफलक पैदा करता है।इस बिंदु पर, आपके वेब एप्लिकेशन परWebAppInterface कक्षा तक पहुंच है। नीचे कुछ HTML और जावास्क्रिप्ट कि जब उपयोगकर्ता एक बटन क्लिक करता है नए इंटरफ़ेस का उपयोग संदेश बॉक्स बनाता है: बटन पर क्लिक करें पर

<input type="button" value="Alert!" onClick="javascript:Android.androidAlert('It works!');" /> 

, Android इंटरफ़ेस कॉलWebAppInterface.androidAlert() विधि करने के लिए प्रयोग किया जाता है।

चेतावनी का एक बिट:addJavascriptInterface() का उपयोग कर जावास्क्रिप्ट को आपके एंड्रॉइड एप्लिकेशन को नियंत्रित करने की अनुमति देता है। यह बहुत उपयोगी सुविधा या खतरनाक सुरक्षा समस्या हो सकती है। इस प्रकार, आपको addJavascriptInterface() का उपयोग नहीं करना चाहिए जब तक कि आपने अपने WebView में दिखाई देने वाले सभी HTML और जावास्क्रिप्ट को लिखा न हो।

1

अपने वेब दृश्य पर जावा स्क्रिप्ट बातचीत सक्षम करने के लिए इस के साथ की कोशिश कर सकते हैं ... bellow यूआरएल पर ... URL

संबंधित मुद्दे