Articles of java

appView.addJavascriptInterface()不适用于API 17

我可以使用我的phonegap java脚本函数和android 2.2中的java函数,但是相同的代码不能在API 17上运行。我应该怎么做才能从API 17中的java脚本调用本机java代码。 我在我的java文件中使用此代码 objCustomNativeAccess = new CustomNativeAccess(this, appView); appView.addJavascriptInterface(objCustomNativeAccess, “CustomNativeAccess”); super.loadUrl(“file:///android_asset/www/index.html”); 我的CustomNativeAccess类是 public class CustomNativeAccess { private WebView mAppView; private DroidGap mGap; /** * Constructor * * @param gap * @param view */ public CustomNativeAccess(DroidGap gap, WebView view) { mAppView = view; mGap = gap; } /** * Get the device phone […]

了解Android的webview addjavascript接口

我知道要从Javascript到Java进行交互,您必须使用webview中的addjavascriptInterface方法注入Java对象。 这是我面临的问题。 我使用addJavascriptInterface方法注册一个java对象,以便在我的JS中使用。 我使用webview.loadURL(“javascript:XXX”);在webview中注入了几个JS webview.loadURL(“javascript:XXX”); 当我完成注入JS时,我发送了一个JS事件。 问题是如果在第1步之后立即执行以下Javascript: mWebView.loadUrl(“javascript:if(window.myobject) console.log(‘myobject found———‘); else {console.log(‘myobject not found—-‘);}”); 我在控制台的日志中find“myobject not found”。 我想知道如果有一段时间我可以访问我的对象,如果是这样,我怎么知道我应该等多少时间来调用我的对象?

什么是android logcat中的致命信号6

我是Android开发的新手,我的应用程序在从活动切换11次时不断被杀死,而且只是说 致命信号6(SIGABRT),tid 9485中的代码-6(Thread-141585) 在我的logcat中。 这是什么意思?

Javascript回调函数传递给Android

我有一个用Java实现的javascript接口,由我在webview中加载的javascript代码调用。 JS Inside webview: Android.myFunction(function(data){ console.log(data); }); Java的: public class JavaScriptInterface { Context context; WebView webView; JavaScriptInterface(Context c, WebView w) { context = c; webView = w; } public void myFunction(String callback) { //when I log callback, it is “undefined” String someData = “Yay for data”; String js = “javascript:(function() { ” + “var callback […]

如何从HttpResponse打印出返回的消息?

我的Android手机上有这个代码。 URI uri = new URI(url); HttpPost post = new HttpPost(uri); HttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(post); 我有一个asp.net webform应用程序,在页面加载这个 Response.Output.Write(“It worked”); 我想从HttpReponse中获取此响应并将其打印出来。 我该怎么做呢? 我尝试了response.getEntity().toString()但它似乎打印出内存中的地址。 谢谢

setTimeOut()javascript到Android的等价物是什么?

我需要setTimeOut(call function(),milliseconds);的等效代码setTimeOut(call function(),milliseconds); 对于Android。 setTimeOut(call function(),milliseconds);

在Android上运行NodeJS的可行选项(2017年8月)

有许多旧的SO线程处理在Android上运行NodeJS。 其中大多数不再可行(JXCore)和/或提供令人困惑,过时,不完整或错误的信息。 因此,我调查了目前(截至2017年8月)可行的方法,并find了三个可能的候选人。 要在他们之间做出决定,我想知道: 这些方法之间的主要区别 每种方法的特定专业人员和骗局 可能遇到障碍,挑战和缺点 你知道其他可行的替代方案吗? 可行的方法是 : 运行包含NodeJS ( J2V8 )的V8 javascript引擎 直接使用NodeJS,嵌入为本机库( node-on-android ) 将React Native与NodeJS app-as-a-service( react-native-node )相结合 除此之外,我还find了许多相关的有趣资源: NPM在没有root的情况下直接使用Termux安装NodeJS(不适用于最终用户) LiquidCore – 原生移动微应用程序devenv(未调查,有趣的概念) dna2oslab – 有一个用于节点可执行文件的工作NodeJS构建脚本 为Android构建NodeJS – 博客提供有用的编译技巧和示例项目

Cordova PhoneGap从2.2.0升级到5.1.1

我有Cordova应用程序,版本2.2.0。 现在我要升级,我已经做了升级部分,升级后,应用程序图像不显示,它来了空白屏幕。 即使是闪屏也没来。 这是我的代码 现在我达到了某种程度。 我模拟的应用程序是关于SQLitePlugin问题。 当Open数据库说db.cordova没有定义时 如何安装数据库 – 将数据库从db文件夹复制到android安装位置。 这工作得很好。 这是我的数据库: var DB = new Object(); DB.isDBSupported = false; DB.isDBCreated = false; DB.vocabDB = null; DB.tables = [‘userResponses’, ‘wordGroups’, ‘words’, ‘wordMapping’, ‘checkExists’, ‘patch_version’] DB.createdTables = 0; DB.setupCallback = null; DB.curQP = null; DB.accountStatus = false; DB.sfx = true; DB.showWarnings = true; DB.firstLaunch = false; […]

使用GSAP的Android webview:尝试删除非JNI本地引用,转储线程

在使用Nexus5仿真器的Android Studio 1.4中,每次在webview中使用GSAP都有3Danimation(x,y,rotationX,rotationY,rotationZ)时,logcat会发出大量此消息: Attempt to remove non-JNI local reference, dumping thread 这似乎不会影响我的webapp的行为,除了产生消息时的一些口吃,这对于需要几秒钟完成的animation来说是多次。 关于如何停止的任何想法,或者这甚至是一个问题? 更新:我的测试设备,三星Galaxy S4上没有出现错误。 所以它可能只是一个模拟器问题。

Android主线程阻塞WebView线程

我一直在努力解决在WebView对JavaScript进行同步调用(带有返回值)的问题,并尝试缩小为什么它不起作用的地方和原因。 似乎WebView线程在主线程等待来自它的响应时阻塞 – 由于WebView在单独的线程上运行,因此不应该这样。 我把这个小样本放在一起,相当清楚地展示了它(我希望): main.xml中: MyActivity.java: package com.example.myapp; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.JavascriptInterface; import android.webkit.WebViewClient; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; public class MyActivity extends Activity { public final static String TAG = “MyActivity”; private WebView webView; private JSInterface JS; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); […]