From 09abdf86a56bc2e24f5b708b51e8c2783be0f6a7 Mon Sep 17 00:00:00 2001 From: luo_dong <44437337@qq.com> Date: Fri, 17 Apr 2020 17:11:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E4=BF=9D=E6=B4=BB?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/qpython/qsl4a/QPyScriptService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/qpython/qsl4a/QPyScriptService.java b/src/main/java/org/qpython/qsl4a/QPyScriptService.java index 8122ba0..ffc95b5 100644 --- a/src/main/java/org/qpython/qsl4a/QPyScriptService.java +++ b/src/main/java/org/qpython/qsl4a/QPyScriptService.java @@ -10,6 +10,7 @@ import android.os.IBinder; import android.util.Log; import org.qpython.qsl4a.qsl4a.AndroidProxy; +import org.qpython.qsl4a.qsl4a.LogUtil; import org.qpython.qsl4a.qsl4a.interpreter.InterpreterConfiguration; import org.qpython.qsl4a.qsl4a.jsonrpc.RpcReceiverManager; import org.qpython.qsl4a.qsl4a.util.SPFUtils; @@ -62,6 +63,7 @@ public class QPyScriptService extends Service { @Override public void onDestroy() { Log.d(TAG, "onDestroy"); + LogUtil.e("doWork444444"); if (mProxy != null) { mProxy.shutdown(); @@ -91,6 +93,7 @@ public class QPyScriptService extends Service { @Override public void onCreate() { Log.d(TAG, "onCreate"); + LogUtil.e("doWork3333333"); super.onCreate(); // clear before run /*File logFile = new File( Environment.getExternalStorageDirectory()+"/"+CONF.BASE_PATH+"/"+scriptName.substring(scriptName.lastIndexOf("/")+1)+".log" ); -- Gitee From 4b8a53733ba687ac96ec929a69c809927870f985 Mon Sep 17 00:00:00 2001 From: luo_dong <44437337@qq.com> Date: Thu, 19 Aug 2021 13:58:34 +0800 Subject: [PATCH 2/4] =?UTF-8?q?1.=E6=9B=B4=E6=96=B0build=E5=88=B029?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/AndroidManifest.xml | 1 + .../qpython/qsl4a/qsl4a/facade/PhoneFacade.java | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 9e42bbc..d867991 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -8,4 +8,5 @@ + diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/facade/PhoneFacade.java b/src/main/java/org/qpython/qsl4a/qsl4a/facade/PhoneFacade.java index 09a5a26..40fdf82 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/facade/PhoneFacade.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/facade/PhoneFacade.java @@ -16,6 +16,7 @@ package org.qpython.qsl4a.qsl4a.facade; +import android.Manifest; import android.app.Service; import android.content.ContentResolver; import android.content.Context; @@ -24,6 +25,7 @@ import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts.PhonesColumns; +import android.support.annotation.RequiresPermission; import android.telephony.CellLocation; import android.telephony.NeighboringCellInfo; import android.telephony.PhoneStateListener; @@ -161,6 +163,7 @@ public class PhoneFacade extends RpcReceiver { } @Rpc(description = "Returns the current cell location.") + @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public CellLocation getCellLocation() { return mTelephonyManager.getCellLocation(); } @@ -221,6 +224,7 @@ public class PhoneFacade extends RpcReceiver { } @Rpc(description = "Returns the serial number of the SIM, if applicable. Return null if it is unavailable.") + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getSimSerialNumber() { return mTelephonyManager.getSimSerialNumber(); } @@ -246,16 +250,19 @@ public class PhoneFacade extends RpcReceiver { } @Rpc(description = "Returns the unique subscriber ID, for example, the IMSI for a GSM phone. Return null if it is unavailable.") + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getSubscriberId() { return mTelephonyManager.getSubscriberId(); } @Rpc(description = "Retrieves the alphabetic identifier associated with the voice mail number.") + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailAlphaTag() { return mTelephonyManager.getVoiceMailAlphaTag(); } @Rpc(description = "Returns the voice mail number. Return null if it is unavailable.") + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber() { return mTelephonyManager.getVoiceMailNumber(); } @@ -271,17 +278,19 @@ public class PhoneFacade extends RpcReceiver { } @Rpc(description = "Returns the software version number for the device, for example, the IMEI/SV for GSM phones. Return null if the software version is not available.") + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion() { return mTelephonyManager.getDeviceSoftwareVersion(); } @Rpc(description = "Returns the phone number string for line 1, for example, the MSISDN for a GSM phone. Return null if it is unavailable.") + @RequiresPermission(Manifest.permission.READ_PHONE_NUMBERS) public String getLine1Number() { return mTelephonyManager.getLine1Number(); } - @Rpc(description = "Returns the neighboring cell information of the device.") - public List getNeighboringCellInfo() { - return mTelephonyManager.getNeighboringCellInfo(); - } +// @Rpc(description = "Returns the neighboring cell information of the device.") +// public List getNeighboringCellInfo() { +// return mTelephonyManager.getNeighboringCellInfo(); +// } } -- Gitee From 2d03143d1160884c22e5769f92b33492aad3d983 Mon Sep 17 00:00:00 2001 From: luo_dong <44437337@qq.com> Date: Wed, 1 Dec 2021 13:42:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?1.=E5=A4=84=E7=90=86=E6=89=80=E6=9C=89getEx?= =?UTF-8?q?ternalStorageDirectory=202.=E8=A7=A3=E5=86=B3=E8=B0=B7=E6=AD=8C?= =?UTF-8?q?fire=E5=BA=93build=E4=B8=8D=E8=B5=B7=E6=9D=A5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/AndroidManifest.xml | 1 + .../org/qpython/qsl4a/qsl4a/FileUtils.java | 33 +++++++++++++------ .../java/org/qpython/qsl4a/qsl4a/Process.java | 14 +++++--- .../qpython/qsl4a/qsl4a/ScriptLauncher.java | 13 ++++---- .../qsl4a/qsl4a/ScriptStorageAdapter.java | 22 ++++++++----- .../qsl4a/qsl4a/facade/AndroidFacade.java | 3 +- .../qsl4a/facade/QPyInterfaceFacade.java | 8 +++-- .../interpreter/InterpreterConstants.java | 13 ++++---- .../qsl4a/interpreter/InterpreterProcess.java | 13 +++++--- .../interpreter/html/HtmlActivityTask.java | 11 +++++-- 10 files changed, 83 insertions(+), 48 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index d867991..4006845 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -9,4 +9,5 @@ + diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/FileUtils.java b/src/main/java/org/qpython/qsl4a/qsl4a/FileUtils.java index bf59c87..1f9cbf5 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/FileUtils.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/FileUtils.java @@ -48,6 +48,18 @@ public class FileUtils { || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state); } + public static String getRootPath(Context context){ + return com.quseit.util.FileUtils.getQyPath(context) + "/sl4a/"; + } + + public static String getScriptsRootPath(Context context){ + return getRootPath(context) + "scripts/"; + } + + public static String getBasePath(Context context){ + return "file://" + getScriptsRootPath(context); + } + public static String getFileContents(String filename) { File scriptFile = new File( filename ); @@ -184,15 +196,16 @@ public class FileUtils { return true; } - public static File getExternalDownload() { - try { - Class c = Class.forName("android.os.Environment"); - Method m = c.getDeclaredMethod("getExternalStoragePublicDirectory", String.class); - String download = c.getDeclaredField("DIRECTORY_DOWNLOADS").get(null).toString(); - return (File) m.invoke(null, download); - } catch (Exception e) { - return new File(Environment.getExternalStorageDirectory(), "Download"); - } + public static File getExternalDownload(Context context) { +// try { +// Class c = Class.forName("android.os.Environment"); +// Method m = c.getDeclaredMethod("getExternalStoragePublicDirectory", String.class); +// String download = c.getDeclaredField("DIRECTORY_DOWNLOADS").get(null).toString(); +// return (File) m.invoke(null, download); +// } catch (Exception e) { +// return new File(Environment.getExternalStorageDirectory(), "Download"); +// } + return context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS); } public static boolean rename(File file, String name) { @@ -226,4 +239,4 @@ public class FileUtils { return builder.toString(); } -} +} \ No newline at end of file diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/Process.java b/src/main/java/org/qpython/qsl4a/qsl4a/Process.java index 67becf3..68ab107 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/Process.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/Process.java @@ -16,6 +16,8 @@ package org.qpython.qsl4a.qsl4a; +import android.content.Context; + import org.qpython.qsl4a.codec.StreamGobbler; import org.qpython.qsl4a.qsl4a.interpreter.InterpreterConstants; @@ -106,7 +108,7 @@ public class Process { return mIn; } - public void start(final Runnable shutdownHook) { + public void start(Context context, final Runnable shutdownHook) { if (isAlive()) { throw new RuntimeException("Attempted to start process that is already running."); } @@ -117,17 +119,19 @@ public class Process { int[] pid = new int[1]; String[] argumentsArray = mArguments.toArray(new String[mArguments.size()]); - mLog = new File(String.format("%s/%s.log", InterpreterConstants.SDCARD_SL4A_ROOT, getName())); +// mLog = new File(String.format("%s/%s.log", InterpreterConstants.SDCARD_SL4A_ROOT, getName())); + mLog = new File(String.format("%s/%s.log", FileUtils.getRootPath(context.getApplicationContext()), getName())); mFd = Exec.createSubprocess(binaryPath, argumentsArray, getEnvironmentArray(), - getWorkingDirectory(), pid); + getWorkingDirectory(context), pid); mPid.set(pid[0]); mOut = new FileOutputStream(mFd); mIn = new StreamGobbler(new FileInputStream(mFd), mLog, DEFAULT_BUFFER_SIZE); mStartTime = System.currentTimeMillis(); new Thread(new Runnable() { + @Override public void run() { int result = Exec.waitFor(mPid.get()); mEndTime = System.currentTimeMillis(); @@ -199,7 +203,7 @@ public class Process { mName = name; } - public String getWorkingDirectory() { + public String getWorkingDirectory(Context context) { return null; } -} +} \ No newline at end of file diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/ScriptLauncher.java b/src/main/java/org/qpython/qsl4a/qsl4a/ScriptLauncher.java index 4bb294b..45dd43c 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/ScriptLauncher.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/ScriptLauncher.java @@ -17,6 +17,7 @@ package org.qpython.qsl4a.qsl4a; import android.app.Service; +import android.content.Context; import android.content.Intent; @@ -59,7 +60,7 @@ public class ScriptLauncher { return task; } - public static InterpreterProcess launchInterpreter(final AndroidProxy proxy, Intent intent, + public static InterpreterProcess launchInterpreter(Context context, final AndroidProxy proxy, Intent intent, InterpreterConfiguration config, Runnable shutdownHook) { Interpreter interpreter; String interpreterName; @@ -67,33 +68,33 @@ public class ScriptLauncher { interpreter = config.getInterpreterByName(interpreterName); InterpreterProcess process = new InterpreterProcess(interpreter, proxy); if (shutdownHook == null) { - process.start(new Runnable() { + process.start(context,new Runnable() { @Override public void run() { proxy.shutdown(); } }); } else { - process.start(shutdownHook); + process.start(context,shutdownHook); } return process; } - public static ScriptProcess launchScript(File script, InterpreterConfiguration configuration, + public static ScriptProcess launchScript(Context context,File script, InterpreterConfiguration configuration, final AndroidProxy proxy, Runnable shutdownHook) { if (!script.exists()) { throw new RuntimeException("No such script to launch."); } ScriptProcess process = new ScriptProcess(script, configuration, proxy); if (shutdownHook == null) { - process.start(new Runnable() { + process.start(context,new Runnable() { @Override public void run() { proxy.shutdown(); } }); } else { - process.start(shutdownHook); + process.start(context,shutdownHook); } return process; } diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/ScriptStorageAdapter.java b/src/main/java/org/qpython/qsl4a/qsl4a/ScriptStorageAdapter.java index b9919a4..527a20f 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/ScriptStorageAdapter.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/ScriptStorageAdapter.java @@ -16,6 +16,10 @@ package org.qpython.qsl4a.qsl4a; +import android.content.Context; + +import com.quseit.util.FileUtils; + import org.qpython.qsl4a.qsl4a.interpreter.Interpreter; import org.qpython.qsl4a.qsl4a.interpreter.InterpreterConfiguration; import org.qpython.qsl4a.qsl4a.interpreter.InterpreterConstants; @@ -46,9 +50,9 @@ public class ScriptStorageAdapter { /** * Writes data to the script by name and overwrites any existing data. */ - public static void writeScript(File script, String data) { + public static void writeScript(Context context, File script, String data) { if (script.getParent() == null) { - script = new File(InterpreterConstants.SCRIPTS_ROOT, script.getPath()); + script = new File(FileUtils.getScriptsRootPath(context), script.getPath()); } try { FileWriter stream = new FileWriter(script, false /* overwrite */); @@ -63,9 +67,9 @@ public class ScriptStorageAdapter { /** * Returns a list of all available script {@link File}s. */ - public static List listAllScripts(File dir) { + public static List listAllScripts(Context context,File dir) { if (dir == null) { - dir = new File(InterpreterConstants.SCRIPTS_ROOT); + dir = new File(FileUtils.getScriptsRootPath(context)); } if (dir.exists()) { List scripts = Arrays.asList(dir.listFiles()); @@ -89,10 +93,10 @@ public class ScriptStorageAdapter { * Returns a list of script {@link File}s from the given folder for which there is an interpreter * installed. */ - public static List listExecutableScripts(File directory, InterpreterConfiguration config) { + public static List listExecutableScripts(Context context,File directory, InterpreterConfiguration config) { // NOTE(damonkohler): Creating a LinkedList here is necessary in order to be able to filter it // later. - List scripts = new LinkedList(listAllScripts(directory)); + List scripts = new LinkedList<>(listAllScripts(context,directory)); // Filter out any files that don't have interpreters installed. for (Iterator it = scripts.iterator(); it.hasNext();) { File script = it.next(); @@ -111,18 +115,18 @@ public class ScriptStorageAdapter { * Returns a list of all (including subfolders) script {@link File}s for which there is an * interpreter installed. */ - public static List listExecutableScriptsRecursively(File directory, + public static List listExecutableScriptsRecursively(Context context,File directory, InterpreterConfiguration config) { // NOTE(damonkohler): Creating a LinkedList here is necessary in order to be able to filter it // later. List scripts = new LinkedList(); - List files = listAllScripts(directory); + List files = listAllScripts(context,directory); // Filter out any files that don't have interpreters installed. for (Iterator it = files.iterator(); it.hasNext();) { File file = it.next(); if (file.isDirectory()) { - scripts.addAll(listExecutableScriptsRecursively(file, config)); + scripts.addAll(listExecutableScriptsRecursively(context,file, config)); } Interpreter interpreter = config.getInterpreterForScript(file.getName()); if (interpreter != null && interpreter.isInstalled()) { diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/facade/AndroidFacade.java b/src/main/java/org/qpython/qsl4a/qsl4a/facade/AndroidFacade.java index 571039d..c574cb6 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/facade/AndroidFacade.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/facade/AndroidFacade.java @@ -526,6 +526,7 @@ public class AndroidFacade extends RpcReceiver { @Rpc(description = "Displays a short-duration Toast notification.") public void makeToast(@RpcParameter(name = "message") final String message) { mHandler.post(new Runnable() { + @Override public void run() { Toast.makeText(mService, message, Toast.LENGTH_SHORT).show(); } @@ -726,7 +727,7 @@ public class AndroidFacade extends RpcReceiver { zone.put("offset", tz.getOffset((new Date()).getTime())); result.put("TZ", zone); result.put("SDK", android.os.Build.VERSION.SDK); - result.put("download", FileUtils.getExternalDownload().getAbsolutePath()); + result.put("download", FileUtils.getExternalDownload(mService.getApplicationContext()).getAbsolutePath()); result.put("appcache", mService.getCacheDir().getAbsolutePath()); try { StatFs fs = new StatFs("/sdcard"); diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/facade/QPyInterfaceFacade.java b/src/main/java/org/qpython/qsl4a/qsl4a/facade/QPyInterfaceFacade.java index 87bc88c..774b692 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/facade/QPyInterfaceFacade.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/facade/QPyInterfaceFacade.java @@ -1,6 +1,7 @@ package org.qpython.qsl4a.qsl4a.facade; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Environment; @@ -118,7 +119,7 @@ public class QPyInterfaceFacade extends RpcReceiver { } @Rpc(description = "Get last QPython execute log", returns = "LogUtil string") - public String getLastLog(@RpcParameter(name = "QPython script path") @RpcOptional String path) { + public String getLastLog(@RpcParameter(name = "QPython script path") @RpcOptional String path, Context context) { String content; content = FileUtils.getFileContents(path, 64); boolean isQApp = content.contains("#qpy:qpyapp"); @@ -142,7 +143,8 @@ public class QPyInterfaceFacade extends RpcReceiver { } else if (isWeb || isQApp) { //File script = new File(path); - String log = Environment.getExternalStorageDirectory()+ "/qpython/log/last.log"; +// String log = Environment.getExternalStorageDirectory()+ "/qpython/log/last.log"; + String log = com.quseit.util.FileUtils.getQyPath(context) + "/qpython/log/last.log"; File lf = new File(log); if (lf.exists()) { return "# QPython:getLastLog(ok)\n" @@ -164,4 +166,4 @@ public class QPyInterfaceFacade extends RpcReceiver { } -} +} \ No newline at end of file diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterConstants.java b/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterConstants.java index 27b0aad..ebeb4c1 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterConstants.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterConstants.java @@ -18,6 +18,8 @@ package org.qpython.qsl4a.qsl4a.interpreter; import android.os.Environment; +import com.quseit.util.FileUtils; + /** * A collection of constants required for installation/removal of an interpreter. * @@ -26,16 +28,15 @@ import android.os.Environment; */ public interface InterpreterConstants { - public static final String SDCARD_ROOT = - Environment.getExternalStorageDirectory().getAbsolutePath() + "/"; +// public static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath() + "/"; - public static final String SDCARD_SL4A_ROOT = SDCARD_ROOT + "sl4a/"; +// public static final String SDCARD_SL4A_ROOT = SDCARD_ROOT + "sl4a/"; - public static final String SCRIPTS_ROOT = SDCARD_SL4A_ROOT + "scripts/"; +// public static final String SCRIPTS_ROOT = SDCARD_SL4A_ROOT + "scripts/"; - public static final String SDCARD_SL4A_DOC = SDCARD_SL4A_ROOT + "doc/"; +// public static final String SDCARD_SL4A_DOC = SDCARD_SL4A_ROOT + "doc/"; - public static final String SL4A_DALVIK_CACHE_ROOT = "/dalvik-cache/"; +// public static final String SL4A_DALVIK_CACHE_ROOT = "/dalvik-cache/"; public static final String INTERPRETER_EXTRAS_ROOT = "/extras/"; diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterProcess.java b/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterProcess.java index 4a00b5c..fa563d8 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterProcess.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/InterpreterProcess.java @@ -16,8 +16,11 @@ package org.qpython.qsl4a.qsl4a.interpreter; +import android.content.Context; + import org.qpython.qsl4a.qsl4a.Analytics; import org.qpython.qsl4a.qsl4a.AndroidProxy; +import org.qpython.qsl4a.qsl4a.FileUtils; import org.qpython.qsl4a.qsl4a.LogUtil; import org.qpython.qsl4a.qsl4a.Process; import org.qpython.qsl4a.qsl4a.SimpleServer; @@ -103,13 +106,13 @@ public class InterpreterProcess extends Process { } @Override - public void start(final Runnable shutdownHook) { + public void start(Context context, final Runnable shutdownHook) { Analytics.track(mInterpreter.getName()); // NOTE(damonkohler): String.isEmpty() doesn't work on Cupcake. if (!mCommand.equals("")) { addArgument(mCommand); } - super.start(shutdownHook); + super.start(context,shutdownHook); } @Override @@ -119,7 +122,7 @@ public class InterpreterProcess extends Process { } @Override - public String getWorkingDirectory() { - return InterpreterConstants.SDCARD_SL4A_ROOT; + public String getWorkingDirectory(Context context) { + return FileUtils.getScriptsRootPath(context); } -} +} \ No newline at end of file diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/html/HtmlActivityTask.java b/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/html/HtmlActivityTask.java index b08b9f1..15bfaf7 100644 --- a/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/html/HtmlActivityTask.java +++ b/src/main/java/org/qpython/qsl4a/qsl4a/interpreter/html/HtmlActivityTask.java @@ -18,6 +18,7 @@ package org.qpython.qsl4a.qsl4a.interpreter.html; import android.annotation.SuppressLint; import android.app.Activity; +import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; @@ -74,7 +75,7 @@ public class HtmlActivityTask extends FutureActivityTask { + "return this._call(\"%1$s\", Array.prototype.slice.call(arguments)); };"; private static final String PREFIX = "file://"; - private static final String BASE_URL = PREFIX + InterpreterConstants.SCRIPTS_ROOT; +// private static final String BASE_URL = PREFIX + InterpreterConstants.SCRIPTS_ROOT; private final RpcReceiverManager mReceiverManager; private final String mJsonSource; @@ -139,7 +140,7 @@ public class HtmlActivityTask extends FutureActivityTask { source = source.replace("{{QPYBUILTIN}}","" + "" + ""); - mView.loadDataWithBaseURL(BASE_URL, source, "text/html", "utf-8", null); + mView.loadDataWithBaseURL(getBaseUrl(mView.getContext().getApplicationContext()), source, "text/html", "utf-8", null); Log.d("MyWebViewClient", source); @@ -150,6 +151,10 @@ public class HtmlActivityTask extends FutureActivityTask { } } + private String getBaseUrl(Context context){ + return PREFIX + com.quseit.util.FileUtils.getScriptsRootPath(context); + } + @SuppressLint({"SetJavaScriptEnabled", "JavascriptInterface"}) @Override public void onCreate() { @@ -196,7 +201,7 @@ public class HtmlActivityTask extends FutureActivityTask { + ""); //Log.d(TAG, "source:"+source); - mView.loadDataWithBaseURL(BASE_URL, source, "text/html", "utf-8", null); + mView.loadDataWithBaseURL(getBaseUrl(mView.getContext().getApplicationContext()), source, "text/html", "utf-8", null); } else { mView.loadUrl(mUrl); } -- Gitee From 166d72af4a90cd904ca3fa981c70061f19452b0c Mon Sep 17 00:00:00 2001 From: jianxiang Date: Wed, 29 Dec 2021 15:20:24 +0800 Subject: [PATCH 4/4] =?UTF-8?q?update:=E4=BF=AE=E6=94=B9=E5=90=8C=E6=84=8F?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8D=8F=E8=AE=AE=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/qpython/qsl4a/QSL4APP.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/qpython/qsl4a/QSL4APP.java b/src/main/java/org/qpython/qsl4a/QSL4APP.java index 2063e4a..49298b4 100644 --- a/src/main/java/org/qpython/qsl4a/QSL4APP.java +++ b/src/main/java/org/qpython/qsl4a/QSL4APP.java @@ -42,13 +42,12 @@ public class QSL4APP extends MyApp implements InterpreterConfiguration.Configura @Override public void onCreate() { super.onCreate(); + } + public void initConfiguration() { mConfiguration = new InterpreterConfiguration(this); mConfiguration.registerObserver(this); mConfiguration.startDiscovering(InterpreterConstants.MIME + QSL4AScript.getFileExtension(this)); - - //注册crashHandler类 - int xq = 30; } public FutureActivityTaskExecutor getTaskExecutor() { -- Gitee