diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 9e42bbca7c7c93217741d46abf809f887d7c6741..400684530c1f21f30a682f725c9f109656ec9a8c 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -8,4 +8,6 @@
+
+
diff --git a/src/main/java/org/qpython/qsl4a/QPyScriptService.java b/src/main/java/org/qpython/qsl4a/QPyScriptService.java
index 8122ba0300053c72070408ce01237babe8b1fc32..ffc95b5ce06bbbe139ed19ce215b650c10a152ee 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" );
diff --git a/src/main/java/org/qpython/qsl4a/QSL4APP.java b/src/main/java/org/qpython/qsl4a/QSL4APP.java
index 2063e4a01d8fc291dd63a298906a54de7b000f3d..49298b450a0c840cf62c1677aeb6d6d7f272ca66 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() {
diff --git a/src/main/java/org/qpython/qsl4a/qsl4a/FileUtils.java b/src/main/java/org/qpython/qsl4a/qsl4a/FileUtils.java
index bf59c87eef8d9bc7a326277efe299c0673b52867..1f9cbf5cf1f954cad23dfd78ffcc3e94b849ab68 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 67becf3a08590f89581f9801f8d6415045af66e2..68ab1076a7cec501f0bf4c103a01bd3723bd7618 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 4bb294b27300fe1807fe0893b4720f0902b0f7b8..45dd43c84a34d8d0b87d32a6b84736a622543342 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 b9919a490c54b102e42029be372693f4f685138e..527a20f6882777e3cd97dff33c75fcb63151c755 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 571039d368b23b7eae9ac848aaaf2623ce87c298..c574cb6aacca96f3f9e48b1de8d2ba8c2a5f05ce 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/PhoneFacade.java b/src/main/java/org/qpython/qsl4a/qsl4a/facade/PhoneFacade.java
index 09a5a26a362d6072c16ca0339597a7846d991c85..40fdf82a4f5142c359c67a01edbb414bffd9634a 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();
+// }
}
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 87bc88c8cde2746da91fc4025cd29e2004fdc669..774b6925894704952e0e12b2e78220862e078c28 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 27b0aadc11976916609dbe10acde6bfa4f0ab86b..ebeb4c11ae1e055f7fc08bcef2dd5b6d0e2cbed9 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 4a00b5c90dcbb2763d89838c99f3637c45fffbcd..fa563d82d2938cd89340777e2b746acc52006b93 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 b08b9f10255f1c9789963e97e44716e12e07e7a0..15bfaf7ab469a9f89d3dfd7ddf0c45e21d424cac 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);
}