安卓調試apk的js,apk運行

本文目錄一覽:

在android中怎樣調用本地js文件里的方法並得到返回值

在android中調用本地js文件里的方法並得到返回值其方法如下:Android中內置了WebKit模塊,而該模塊的Java層視圖類就是WebView,所有需要使用Web瀏覽器功能的Android都需要創建該視圖類對象顯示和處理請求的網路資源。目前WebKit支持Http、Https、Ftp和JavaScript請求。下面是在Android中調用JavaScript方法以及如何在js中調用本地方法。1、在Assets下放一個簡單的html文件jstest/apk/res/android”WebView android:id=”@+id/wv_test”android:layout_width=”fill_parent”android:layout_height=”fill_parent”android:layout_above=”@+id/btn_showmsg”/Button android:id=”@+id/btn_showmsg”android:layout_width=”200dip”android:layout_height=”40dip”android:layout_alignParentBottom=”true”android:layout_centerHorizontal=”true”android:text=”調用html中js方法”//RelativeLayout3、然後是Activity,MainActivity.javapackage com.harold.jstest;import com.harold.base.JSKit;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.widget.Button;public class MainActivity extends Activity {private WebView mWebView;private Button btnShowInfo;private JSKit js;private Handler mHandler = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//初始化控制項mWebView = (WebView) findViewById(R.id.wv_test);btnShowInfo = (Button) findViewById(R.id.btn_showmsg);//實例化js對象js = new JSKit(this);//設置參數mWebView.getSettings().setBuiltInZoomControls(true);//內容的渲染需要webviewChromClient去實現,設置webviewChromClient基類,解決js中alert不彈出的問題和其他內容渲染問題mWebView.setWebChromeClient(new WebChromeClient());mWebView.getSettings().setJavaScriptEnabled(true);//把js綁定到全局的myjs上,myjs的作用域是全局的,初始化後可隨處使用mWebView.addJavascriptInterface(js, “myjs”);mWebView.loadUrl(“”);btnShowInfo.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mHandler.post(new Runnable() {@Overridepublic void run() {//調用 HTML 中的javaScript 函數mWebView.loadUrl(“javascript:showMsg()”);}});}});}}4、最後是綁定全局js的類JSKit.javapackage com.harold.base;import android.widget.Toast;import com.harold.jstest.MainActivity;public class JSKit {private MainActivity ma;public JSKit(MainActivity context) {this.ma = context;}public void showMsg(String msg) {Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show();}}例子比較簡單,代碼里都加了注釋,這裡就不多說了,本示例用的本地的html,如果訪問網路中的網頁,別忘記在AndroidManifest.xml中加許可權uses-permission android:name=”android.permission.INTERNET”/

Android調用js的問題

Android中可以使用WebView載入網頁,同時Android端的java代碼可以與網頁上的javascript代碼之間相互調用。

一 Android部分:

布局代碼:

LinearLayout xmlns:android=”” xmlns:tools=”” android:layout_width=”match_parent” android:layout_height=”match_parent” android:focusable=”true” android:focusableInTouchMode=”true” android:orientation=”vertical” android:padding=”8dp” tools:context=”.MainActivity” LinearLayout android:layout_width=”match_parent” android:layout_height=”wrap_content” EditText android:id=”@+id/input_et” android:layout_width=”0dp” android:layout_height=”wrap_content” android:singleLine=”true” android:layout_weight=”1″ android:hint=”請輸入信息” / Button android:text=”Java調用JS” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:onClick=”sendInfoToJs” / /LinearLayout WebView android:id=”@+id/webView” android:layout_width=”match_parent” android:layout_height=”match_parent” / /LinearLayout

Activity代碼:

public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.webView); webView.setVerticalScrollbarOverlay(true); //設置WebView支持JavaScript webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(“”); //在js中調用本地java方法 webView.addJavascriptInterface(new JsInterface(this), “AndroidWebView”); // //添加客戶端支持 webView.setWebChromeClient(new WebChromeClient()); } private class JsInterface { private Context mContext; public JsInterface(Context context) { this.mContext = context; } //在js中調用window.AndroidWebView.showInfoFromJs(name),便會觸發此方法。 @JavascriptInterface public void showInfoFromJs(String name) { Toast.makeText(mContext, name, Toast.LENGTH_SHORT).show(); } } //在java中調用js代碼 public void sendInfoToJs(View view) { String msg = ((EditText) findViewById(R.id.input_et)).getText().toString(); //調用js中的函數:showInfoFromJava(msg) webView.loadUrl(“javascript:showInfoFromJava(‘” + msg + “‘)”); // webView.loadUrl(“javascript:showInfoFromJava()”); } }

二 網頁代碼

!DOCTYPE html html lang=”en” head meta charset=”UTF-8″ titleAndroid WebView 與 Javascript 交互/title /head body input type=”button” value=”分享” onclick=”f1()” input type=”text” id=”show”/ /body script function f1(){ AndroidWebView.showInfoFromJs(“hello”); } function showInfoFromJava(msg){ document.getElementById(“show”).value=msg; alert(1); } /script /html

注意: android 調用js代碼可能會報錯如下:

W/WebView(2088): java.lang.Throwable: A WebView method was called on thread ‘JavaBridge’. All WebView methods must be called on the same thread.

解決辦法:

webView.post(new Runnable() { @Override public void run() { webView.loadUrl(“javascript:showInfoFromJava(‘” + msg + “‘)”); }});

android 中怎麼執行js腳本

android要執行腳本,只有通過本地的webview打開腳本頁面。

調用步驟

1、設置webview支持腳本

webSettings.setJavaScriptEnabled(true);

2、打開腳本頁面

mWebView.loadUrl(“”);//這裡打開該app的asset目錄下的demo.html,裡面含有wave函數腳本

3、調用腳本

mWebView.loadUrl(“javascript:wave()”);//調用打開頁面中的wave函數

android里如何調用Js里的函數

Android中內置了WebKit模塊,而該模塊的Java層視圖類就是WebView,所有需要使用Web瀏覽器功能的Android都需要創建該視圖類對象顯示和處理請求的網路資源。目前WebKit支持Http、Https、Ftp和JavaScript請求。

1、在Assets下放一個簡單的html文件jstest.html

HTML

HEAD

meta name=”viewport” content=”width=device-width, target-densitydpi=device-dpi” /

META http-equiv=”Content-Type” content=”text/html; charset=UTF-8″

script

   function showMsg(){

      alert(“hello world!”);

   }

   function showMsgInAndroid(){

      myjs.showMsg(‘hello in android!’);

   }

/script

/HEAD

BODY

span測試js使用/span

button id=’btntest’ onclick=’showMsgInAndroid()’調用android方法/button

/BODY

/HTML

2、布局文件main.xml

?xml version=”1.0″ encoding=”utf-8″?

RelativeLayout

android:id=”@+id/rl_main”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent”

xmlns:android=””

    

   WebView 

       android:id=”@+id/wv_test”

       android:layout_width=”fill_parent”

       android:layout_height=”fill_parent”

       android:layout_above=”@+id/btn_showmsg”/

   Button 

       android:id=”@+id/btn_showmsg”

       android:layout_width=”200dip”

       android:layout_height=”40dip”

       android:layout_alignParentBottom=”true”

       android:layout_centerHorizontal=”true”

       android:text=”調用html中js方法”/

/RelativeLayout

3、然後是Activity,MainActivity.java

package com.harold.jstest;

import com.harold.base.JSKit;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.view.View.OnClickListener;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.widget.Button;

public class MainActivity extends Activity {

private WebView mWebView;

private Button btnShowInfo;

private JSKit js;

private Handler mHandler = new Handler();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//初始化控制項

mWebView = (WebView) findViewById(R.id.wv_test);

btnShowInfo = (Button) findViewById(R.id.btn_showmsg);

//實例化js對象

js = new JSKit(this);

//設置參數

mWebView.getSettings().setBuiltInZoomControls(true);

//內容的渲染需要webviewChromClient去實現,

//設置webviewChromClient基類,解決js中alert不彈出的問題和其他內容渲染問題

mWebView.setWebChromeClient(new WebChromeClient());

mWebView.getSettings().setJavaScriptEnabled(true);

//把js綁定到全局的myjs上,myjs的作用域是全局的,初始化後可隨處使用

mWebView.addJavascriptInterface(js, “myjs”);

mWebView.loadUrl(“”);

btnShowInfo.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

mHandler.post(new Runnable() {

@Override

public void run() {

//調用 HTML 中的javaScript 函數

mWebView.loadUrl(“javascript:showMsg()”);

}

});

}

});

}

}

android studio怎麼調試apk

調試基礎

一般來說我們有兩種辦法調試一個debuggable的apk;其一是下好斷點,然後用debug模式編譯安裝這個app;其二是 attach process,在Android Studio裡面就是這麼一個對話框:

Attach Process

第二種方法比較常用,我們可以在啟動apk之後,直接下斷點,然後attach process到制定進程,條件觸發之後就可以直接進入調試模式。

其他的一些單步執行,step into, step out, force step into 等就不提了;基本的跟蹤手段。

還是提一下,下斷點最簡單的辦法,是在代碼編輯器的左側,行號右邊滑鼠點擊一下即可。

Evaluate Expression

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/295967.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-27 12:57
下一篇 2024-12-27 12:57

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27
  • 解決js ajax post 419問題

    對於使用ajax post請求時出現的419問題,我們需要進行以下幾個方面的闡述,包括返回碼的含義、可能出現的情況、解決方案等內容。 一、解析419返回碼 419返回碼錶示用戶超時…

    編程 2025-04-27
  • Three.js實現室內模型行走

    在本文中,將介紹如何使用Three.js創建室內模型,並在場景中實現行走。為了實現這一目標,需要完成以下任務: 載入室內模型及材質貼圖 實現攝像機控制,支持用戶自由行走 添加光源,…

    編程 2025-04-25

發表回復

登錄後才能評論