Sending Values Android Activity to Javascript have two solutiions
they are 1).Using Webview Object
2).Using loadUrl Method
Solutions 1:
send values from Android activity to javascript function it is not difficult.just follow these steps
pushnotification.html:
Solutions 1:
send values from Android activity to javascript function it is not difficult.just follow these steps
Step1: First create webview object in android layout
------
------
main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".BeWithMeActivity" >
<!-- Here created webview object-->
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
</RelativeLayout>
------
Step2:
Below code configured where we want call the javascript function
package com.asman.bwithme;
import org.apache.cordova.DroidGap;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.support.v4.app.NavUtils;
public class MainActivity extends DroidGap {
public WebView myWebView ;
static String message;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
message = intent.getStringExtra(GCMIntentService.EXTRA_MESSAGE);
System.out.println("message:::"+message);
setContentView(R.layout.activity_main);
//This code related calling javascript function
myWebView = (WebView) findViewById(R.id.webview);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/www/pushnotification.html");
final MyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface(this);
myWebView.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
}
/** Responsible to call java script method
*
*
*
*/
public class MyJavaScriptInterface {
Context mContext;
MyJavaScriptInterface(Context c) {
mContext = c;
}
public void showToast(){
System.out.println(message);
myWebView.loadUrl("javascript:callFromActivity('" + message + "');");
}
}
}
Here created Html page and javascript function
step3:
---------------------
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Push Notification</title>
<script type="text/javascript" src="js/cordova-2.0.0.js"></script>
<script type="text/javascript" src="jquery.mobile-1.2.0/js/jquery.js"></script>
<script type="text/javascript" src="jquery.mobile-1.2.0/js/jquery.mobile-1.2.0.js"></script>
<script type="text/javascript" src="js/push.js"></script>
<link rel="stylesheet" href="jquery.mobile-1.2.0/css/jquery.mobile.structure-1.2.0.css" />
<link rel="stylesheet" href="jquery.mobile-1.2.0/css/jquery.mobile-1.2.0.css" />
<link rel="stylesheet" href="css/main.css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places">
function sendGcmIdToJS(){
AndroidFunction.showToast();
}
function callFromActivity(msg) {
//$("#mydiv").prepend(msg);
//document.getElementById("mydiv").value = msg;
gcmId = id;
}
</script>
</head>
<body onload="sendGcmIdToJS()">
<header class="title"> Banner </header>
<div data-role="button" data-inline="true" data-theme="b" class="role" onclick="accept()">Accept</div><br>
<!-- <p id="mydiv">data from notification::</p> -->
<input type="text" id="mydiv" style="width: 500px;height: 30px;"/>
<div data-role="button" data-inline="true" data-theme="b" class="role" onclick="denny()">Denny</div><br>
<div id="dvTraceMap"></div>
</body>
</html>
Solution2:
-------------
Using super.loadUrl() method we can achive this functionality
My Activity.java:
----------------------
import org.apache.cordova.DroidGap;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String Data="sending values to javascript";
super.loadUrl("file:///android_asset/www/uploadPhoto.html?param="+Data);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
uploadPhoto.html:
--------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Vote My Paint</title>
<script src="jquery.mobile-1.2.0/js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/cordova-2.0.0.js"></script>
<!-- <script type="text/javascript" src="js/analytics.js"></script> -->
<link href="css/style_ipad.css" rel="stylesheet" type="text/css" />
<!-- <script type="text/javascript" charset="utf-8" src="js/InAppPurchaseManager.js"></script>
<script type="text/javascript" charset="utf-8" src="js/asmanPlugin.js"></script> -->
<script type="text/javascript">
function pathInfoFromActivity()
{
var data= getURLParameters("param");
alert(data);
}
function getURLParameters(paramName)
{
var sURL = window.document.URL.toString();
if (sURL.indexOf("?") > 0)
{
var arrParams = sURL.split("?");
var arrURLParams = arrParams[1].split("&");
var arrParamNames = new Array(arrURLParams.length);
var arrParamValues = new Array(arrURLParams.length);
var i = 0;
for (i=0;i<arrURLParams.length;i++)
{
var sParam = arrURLParams[i].split("=");
arrParamNames[i] = sParam[0];
if (sParam[1] != "")
arrParamValues[i] = unescape(sParam[1]);
else
arrParamValues[i] = "No Value";
}
for (i=0;i<arrURLParams.length;i++)
{
if(arrParamNames[i] == paramName){
//alert("Param from activity:"+arrParamValues[i]);
return arrParamValues[i];
}
}
return "No Parameters Found";
}
}
</script>
</head>
<body onload="pathInfoFromActivity()">
</body>
</html>
Thanks man.
ReplyDeleteYou saved my day
Hi,thanks for the tutorial it worked well for me
ReplyDeleteThis is an awesome post.Really very informative and creative contents about Java. These concept is a good way to enhance the knowledge.I like it and help me to development very well.Thank you for this brief explanation and very nice information.Well, got a good knowledge.
ReplyDeleteJava training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery
Very well written blog and I always love to read blogs like these because they offer very good information to readers with very less amount of words.keep it up!!!
ReplyDeleteAndroid Training in Chennai
Android Online Training in Chennai
Android Training in Bangalore
Android Training in Hyderabad
Android Training in Coimbatore
Android Training
Android Online Training