diff --git a/.gitignore b/.gitignore index 6e19ac2318fb0b8a83dce76237ad7a6f9f1ce2bb..7413caa71eba8e4be15797c83c8b95dfd6218a39 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,5 @@ qpython/ol qpython/op qpysl4a qbaselib -qftplib \ No newline at end of file +qftplib +qpysdk\src\main\jni \ No newline at end of file diff --git a/qpysdk/src/main/java/org/qpython/qpysdk/QPyConstants.java b/qpysdk/src/main/java/org/qpython/qpysdk/QPyConstants.java index f6cc077e711935db0f341fc4eb3a83b3a9786b48..cd9aae04d688775bcbc5722f76126488bfddddc2 100644 --- a/qpysdk/src/main/java/org/qpython/qpysdk/QPyConstants.java +++ b/qpysdk/src/main/java/org/qpython/qpysdk/QPyConstants.java @@ -40,6 +40,7 @@ public interface QPyConstants extends BASE_CONF { // String ABSOLUTE_LOG = ABSOLUTE_PATH + "/log/last.log"; String PYTHON_2 = "2.x"; + String PyVer = "3.6"; String QPYC3 = "https://dl.qpy.io/py3.json"; String QPYC2COMPATIBLE = "https://dl.qpy.io/py2compatible.json"; diff --git a/qpysdk/src/main/java/org/qpython/qpysdk/QPySDK.java b/qpysdk/src/main/java/org/qpython/qpysdk/QPySDK.java index 9d1973a619e8e5686566783d5cadff0dc35d2809..887fd9f01e0d656431a43608b9a482c0efbbba91 100644 --- a/qpysdk/src/main/java/org/qpython/qpysdk/QPySDK.java +++ b/qpysdk/src/main/java/org/qpython/qpysdk/QPySDK.java @@ -80,13 +80,13 @@ public class QPySDK { File f = new File(script); - if (Build.VERSION.SDK_INT >= 20) { - binaryPath = this.context.getFilesDir() + "/bin/python-android5"; - ; - } else { + //if (Build.VERSION.SDK_INT >= 20) { + // binaryPath = this.context.getFilesDir() + "/bin/python-android5"; + // ; + //} else { binaryPath = this.context.getFilesDir() + "/bin/python"; - ; - } + // ; + // } int[] pid = new int[1]; @@ -274,7 +274,7 @@ public class QPySDK { Log.d(TAG, "NO EXTRACT"); } - if (resource.startsWith("private") || resource.startsWith("notebook")) { + if (resource.startsWith("private") || resource.startsWith("resource")) { chmodX(); } } diff --git a/qpython/build.gradle b/qpython/build.gradle index db8e34a287108920f1174d6ceccefd2225785499..9993d7faa658edaa1670e1eb0ac7bb0e3bbc28c0 100644 --- a/qpython/build.gradle +++ b/qpython/build.gradle @@ -15,8 +15,8 @@ android { defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 313 - versionName "3.1.8.4" + versionCode 314 + versionName "3.1.9" multiDexEnabled true vectorDrawables.useSupportLibrary = true diff --git a/qpython/src/main/assets/ipynb.mp3 b/qpython/src/main/assets/ipynb.mp3 deleted file mode 100644 index 82ab6e187b5a18519953be7eb5697ed35ed6476f..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/assets/ipynb.mp3 and /dev/null differ diff --git a/qpython/src/main/assets/notebook3.mp3 b/qpython/src/main/assets/notebook3.mp3 deleted file mode 100644 index 5f1e2e9d1feea046a6c80ca73f0fefdbfff0f547..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/assets/notebook3.mp3 and /dev/null differ diff --git a/qpython/src/main/assets/private1.mp3 b/qpython/src/main/assets/private1.mp3 index 04bcab832cec8736475805515240d3bae7fc2b93..7bf49d5577018080b74a46b9398b57390b92e92d 100644 Binary files a/qpython/src/main/assets/private1.mp3 and b/qpython/src/main/assets/private1.mp3 differ diff --git a/qpython/src/main/assets/private32.mp3 b/qpython/src/main/assets/private32.mp3 deleted file mode 100644 index 295d74b99eaa220d60b1b5394fc046ce855e575b..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/assets/private32.mp3 and /dev/null differ diff --git a/qpython/src/main/assets/private33.mp3 b/qpython/src/main/assets/private33.mp3 deleted file mode 100644 index d7104cbfc361289f8f8345b7ae73e30f6b4dc289..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/assets/private33.mp3 and /dev/null differ diff --git a/qpython/src/main/assets/public3.mp3 b/qpython/src/main/assets/public3.mp3 deleted file mode 100644 index fd02b4b4fa68e3b1da14c31d12f80d79b953b8b0..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/assets/public3.mp3 and /dev/null differ diff --git a/qpython/src/main/assets/private31.mp3 b/qpython/src/main/assets/resource3.mp3 similarity index 57% rename from qpython/src/main/assets/private31.mp3 rename to qpython/src/main/assets/resource3.mp3 index 8602504aa6fbd985528b505f27b51ac648b2cb37..3c4a24c817c5df6421e07ce094ca9228c1c20cdb 100644 Binary files a/qpython/src/main/assets/private31.mp3 and b/qpython/src/main/assets/resource3.mp3 differ diff --git a/qpython/src/main/java/org/qpython/qpy/console/ScriptExec.java b/qpython/src/main/java/org/qpython/qpy/console/ScriptExec.java index 934ca11bafb8c5b4bd3c26401637bd63b5f9f9fe..da576f4bc5e93c9a5d85d5bf132e2e444a1efe0d 100644 --- a/qpython/src/main/java/org/qpython/qpy/console/ScriptExec.java +++ b/qpython/src/main/java/org/qpython/qpy/console/ScriptExec.java @@ -183,12 +183,12 @@ public class ScriptExec { } if (isQPy3) { - String pyVer = new File(context.getFilesDir()+"/lib/python37.zip").exists()?"3.7":"3.6"; + String pyVer = QPyConstants.PyVer; env[5] = "PYTHONPATH=" +filesDir+"/lib/python"+pyVer+"/site-packages/:" +filesDir+"/lib/python"+pyVer+"/:" +filesDir+"/lib/python"+pyVer.replace(".","")+".zip:" - +filesDir+"/lib/notebook.zip:" + //+filesDir+"/lib/notebook.zip:" +filesDir+"/lib/python"+pyVer+"/qpyutil.zip:" +filesDir+"/lib/python"+pyVer+"/lib-dynload/:" +externalStorage+"/lib/python"+pyVer+"/site-packages/:" @@ -203,7 +203,7 @@ public class ScriptExec { +filesDir+"/lib/python2.7/site-packages/:" +filesDir+"/lib/python2.7/:" +filesDir+"/lib/python27.zip:" - +filesDir+"/lib/notebook.zip:" + //+filesDir+"/lib/notebook.zip:" +filesDir+"/lib/python2.7/qpyutil.zip:" +filesDir+"/lib/python2.7/lib-dynload/:" +externalStorage+"/lib/python2.7/site-packages/:" @@ -248,12 +248,12 @@ public class ScriptExec { boolean isRootEnable = NAction.isRootEnable(context); if (Build.VERSION.SDK_INT >= 20) { if (bin) { - scmd = context.getFilesDir() + "/bin/python" + v + "-android5"; + scmd = context.getFilesDir() + "/bin/python" + v ;//+ "-android5"; } else { if (isRootEnable) { - scmd = context.getFilesDir() + "/bin/qpython" + v + "-android5-root.sh"; + scmd = context.getFilesDir() + "/bin/qpython" + v +"-root.sh";//+ "-android5-root.sh"; } else { - scmd = context.getFilesDir() + "/bin/qpython" + v + "-android5.sh"; + scmd = context.getFilesDir() + "/bin/qpython" + v ;//+ "-android5.sh"; } } } else { diff --git a/qpython/src/main/java/org/qpython/qpy/console/TermActivity.java b/qpython/src/main/java/org/qpython/qpy/console/TermActivity.java index c91dbe212e25d0a67d7896a6316ae5d706330213..3270060c644b450e1b41b294631eee155bbc6db3 100644 --- a/qpython/src/main/java/org/qpython/qpy/console/TermActivity.java +++ b/qpython/src/main/java/org/qpython/qpy/console/TermActivity.java @@ -1202,20 +1202,20 @@ public class TermActivity extends AppCompatActivity implements UpdateCallback, S private String getScmd() { boolean isRootEnable = NAction.isRootEnable(this); String scmd; - if (Build.VERSION.SDK_INT >= 20) { + /*if (Build.VERSION.SDK_INT >= 20) { if (isRootEnable) { scmd = getApplicationContext().getFilesDir() + "/bin/qpython" + (NAction.isQPy3(this) ? "3" : "") + "-android5-root.sh"; } else { scmd = getApplicationContext().getFilesDir() + "/bin/qpython" + (NAction.isQPy3(this) ? "3" : "") + "-android5.sh"; } - } else { + } else {*/ if (isRootEnable) { scmd = getApplicationContext().getFilesDir() + "/bin/qpython" + (NAction.isQPy3(this) ? "3" : "") + "-root.sh"; } else { scmd = getApplicationContext().getFilesDir() + "/bin/qpython" + (NAction.isQPy3(this) ? "3" : "") + ".sh"; } - } + //} return scmd; } diff --git a/qpython/src/main/java/org/qpython/qpy/main/activity/HomeMainActivity.java b/qpython/src/main/java/org/qpython/qpy/main/activity/HomeMainActivity.java index 8cc3edf7b8786487936bac9d401e341d78f28a9e..68cf19967c800ed6d9df3533d847044eb46edf63 100644 --- a/qpython/src/main/java/org/qpython/qpy/main/activity/HomeMainActivity.java +++ b/qpython/src/main/java/org/qpython/qpy/main/activity/HomeMainActivity.java @@ -31,6 +31,7 @@ import org.greenrobot.eventbus.Subscribe; import org.json.JSONException; import org.json.JSONObject; import org.qpython.qpy.R; +import org.qpython.qpy.console.ScriptExec; import org.qpython.qpy.console.TermActivity; import org.qpython.qpy.databinding.ActivityMainBinding; import org.qpython.qpy.main.app.App; @@ -441,20 +442,22 @@ public class HomeMainActivity extends BaseActivity { new Thread(() -> { QPySDK qpysdk = new QPySDK(HomeMainActivity.this, HomeMainActivity.this); //这里会在切换qpy3的时候再次释放相关资源 - qpysdk.extractRes(py3?"private31":"private1", HomeMainActivity.this.getFilesDir()); - qpysdk.extractRes(py3?"private32":"private2", HomeMainActivity.this.getFilesDir()); - qpysdk.extractRes(py3?"private33":"private3", HomeMainActivity.this.getFilesDir()); + //qpysdk.extractRes(py3?"private33":"private3", HomeMainActivity.this.getFilesDir(),true); + File externalStorage = new File(FileUtils.getPath(App.getContext()), "qpython"); if (py3) { - qpysdk.extractRes("notebook3", HomeMainActivity.this.getFilesDir()); + qpysdk.extractRes("resource3", HomeMainActivity.this.getFilesDir(),true); + ScriptExec.getInstance().playScript(this, + "setup", null,false); + } else { + qpysdk.extractRes("private1", HomeMainActivity.this.getFilesDir()); + qpysdk.extractRes("private2", HomeMainActivity.this.getFilesDir()); + qpysdk.extractRes("private3", HomeMainActivity.this.getFilesDir()); + qpysdk.extractRes("public", new File(externalStorage + "/lib")); } - File externalStorage = new File(FileUtils.getPath(App.getContext()), "qpython"); FileHelper.createDirIfNExists(externalStorage + "/cache"); FileHelper.createDirIfNExists(externalStorage + "/log"); - FileHelper.createDirIfNExists(externalStorage + "/notebooks"); - - qpysdk.extractRes(py3?"public3":"public", new File(externalStorage + "/lib")); - - qpysdk.extractRes("ipynb", new File(externalStorage + "/notebooks")); + //FileHelper.createDirIfNExists(externalStorage + "/notebooks"); + //qpysdk.extractRes("ipynb", new File(externalStorage + "/notebooks")); extractRes(); clickListener.onClick(null); @@ -471,17 +474,17 @@ public class HomeMainActivity extends BaseActivity { Resources resources = getResources(); try { String qpyPath = FileUtils.getQyPath(App.getContext()); - Utils.createDirectoryOnExternalStorage(this,"qpython/project3/"); + /*Utils.createDirectoryOnExternalStorage(this,"qpython/project3/"); Utils.unzip(resources.openRawResource(R.raw.projects3), qpyPath + "/qpython/project3/", false); Utils.createDirectoryOnExternalStorage(this,"qpython/scripts3/"); - Utils.unzip(resources.openRawResource(R.raw.scripts3), qpyPath + "/qpython/scripts3/", false); + Utils.unzip(resources.openRawResource(R.raw.scripts3), qpyPath + "/qpython/scripts3/", false);*/ Utils.createDirectoryOnExternalStorage(this,"qpython/projects/"); Utils.unzip(resources.openRawResource(R.raw.projects2), qpyPath + "/qpython/projects/", false); Utils.createDirectoryOnExternalStorage(this,"qpython/scripts/"); Utils.unzip(resources.openRawResource(R.raw.scripts2), qpyPath + "/qpython/scripts/", false); - QPySDK qPySDK = new QPySDK(this, this); - qPySDK.extractRes("ipynb", new File(externalStorage + "/notebooks")); + //QPySDK qPySDK = new QPySDK(this, this); + //qPySDK.extractRes("ipynb", new File(externalStorage + "/notebooks")); } catch (Exception e) { Log.e("HomeMainActivity", "Failed to copyResourcesToLocal", e); } diff --git a/qpython/src/main/java/org/qpython/qpy/main/activity/QWebViewActivity.java b/qpython/src/main/java/org/qpython/qpy/main/activity/QWebViewActivity.java index eb3aa03fa064ea80b3eb1f67188877f283779756..649b53203016a5eb53f14d0be17f102bd7b3be09 100644 --- a/qpython/src/main/java/org/qpython/qpy/main/activity/QWebViewActivity.java +++ b/qpython/src/main/java/org/qpython/qpy/main/activity/QWebViewActivity.java @@ -17,6 +17,8 @@ import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.Window; +import android.view.WindowManager; import android.webkit.JavascriptInterface; import android.webkit.ValueCallback; import android.webkit.WebBackForwardList; @@ -161,12 +163,18 @@ public class QWebViewActivity extends BaseActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - binding = DataBindingUtil.setContentView(this, R.layout.activity_qwebview); receiver = new DownloadNotebookReceiver(); Intent i = getIntent(); String title = i.getStringExtra(TITLE); String type = i.getStringExtra(TYPE); + + if (title != null && title.equals("")){ + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + binding = DataBindingUtil.setContentView(this, R.layout.activity_qwebview); + if (launchScript == null || launchScript.isEmpty()) launchScript = i.getStringExtra(LOG_PATH); @@ -176,6 +184,9 @@ public class QWebViewActivity extends BaseActivity { if (title != null) { setTitle(title); + if (title.equals("")){ + binding.lt.getRoot().setVisibility(View.GONE); + } } else { setTitle(R.string.app_name); } diff --git a/qpython/src/main/java/org/qpython/qpy/main/activity/VideoActivity.java b/qpython/src/main/java/org/qpython/qpy/main/activity/VideoActivity.java index f13b544128e0a0444c1e0bd50c35cd26f98e3093..c28af89e41358ab2acabaa71ac15aaee2177b3ad 100644 --- a/qpython/src/main/java/org/qpython/qpy/main/activity/VideoActivity.java +++ b/qpython/src/main/java/org/qpython/qpy/main/activity/VideoActivity.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.MediaController; +import android.widget.Toast; import android.widget.VideoView; import org.qpython.qpy.R; @@ -17,10 +18,20 @@ public class VideoActivity extends Activity Intent intent=getIntent(); String path=intent.getStringExtra("path"); VideoView videoView=findViewById(R.id.videoView); - videoView.setVideoPath(path); - MediaController mediaController=new MediaController(this); - mediaController.setAnchorView(mediaController); - videoView.start(); - videoView.setMediaController(mediaController); + videoView.setVideoPath(path); + MediaController mediaController = new MediaController(this){ + boolean tip = true; + @Override + public void show(){ + if(tip){ + Toast.makeText(VideoActivity.this, R.string.exit_after_close_progress, Toast.LENGTH_SHORT).show(); + tip=false; + } + super.show(); + } + }; + mediaController.setAnchorView(mediaController); + videoView.setMediaController(mediaController); + videoView.start(); } } diff --git a/qpython/src/main/java/org/qpython/qpy/main/fragment/SettingFragment.java b/qpython/src/main/java/org/qpython/qpy/main/fragment/SettingFragment.java index cd2a3e603dfde86f2f5a26e7a9b80aedf6c132a4..6e36f3d7c9f0feb2278544ed6277b64c384bf518 100644 --- a/qpython/src/main/java/org/qpython/qpy/main/fragment/SettingFragment.java +++ b/qpython/src/main/java/org/qpython/qpy/main/fragment/SettingFragment.java @@ -39,6 +39,7 @@ import org.apache.http.Header; import org.json.JSONException; import org.json.JSONObject; import org.qpython.qpy.R; +import org.qpython.qpy.console.ScriptExec; import org.qpython.qpy.main.activity.AboutActivity; import org.qpython.qpy.main.activity.CourseActivity; import org.qpython.qpy.main.activity.HomeMainActivity; @@ -681,23 +682,21 @@ public class SettingFragment extends PreferenceFragment { QPySDK qpysdk = new QPySDK(this.getActivity(), this.getActivity()); Observable.create((Observable.OnSubscribe) subscriber -> { try { - releaseQPycRes(NStorage.getSP(App.getContext(), QPyConstants.KEY_PY3_RES)); + //releaseQPycRes(NStorage.getSP(App.getContext(), QPyConstants.KEY_PY3_RES)); //extractQPyCore(false); - - qpysdk.extractRes("private31", getActivity().getFilesDir(), true); - qpysdk.extractRes("private32", getActivity().getFilesDir(), true); - qpysdk.extractRes("private33", getActivity().getFilesDir(), true); - qpysdk.extractRes("notebook3", getActivity().getFilesDir(), true); - - File externalStorage = new File(FileUtils.getPath(App.getContext()), "qpython"); - - qpysdk.extractRes("publi3c", new File(externalStorage + "/lib")); - + //qpysdk.extractRes("private31", getActivity().getFilesDir(), true); + //qpysdk.extractRes("private32", getActivity().getFilesDir(), true); + qpysdk.extractRes("resource3", getActivity().getFilesDir(), true); + //qpysdk.extractRes("notebook3", getActivity().getFilesDir(), true); + //File externalStorage = new File(FileUtils.getPath(App.getContext()), "qpython"); + //qpysdk.extractRes("public3", new File(externalStorage + "/lib")); subscriber.onNext(true); + ScriptExec.getInstance().playScript(getActivity(), + "setup", null,false); subscriber.onCompleted(); } catch (Exception e) { - e.printStackTrace(); - subscriber.onError(new Throwable("Failed to release Py3 resources")); + //e.printStackTrace(); + subscriber.onError(new Throwable("Failed to release Py3 resources . "+e)); } }) .subscribeOn(Schedulers.io()) @@ -713,7 +712,7 @@ public class SettingFragment extends PreferenceFragment { @Override public void onError(Throwable e) { - Toast.makeText(getActivity(), "Faild to extract Py3 resource", Toast.LENGTH_SHORT).show(); + Toast.makeText(getActivity(), "Faild to extract Py3 resource . "+e.toString(), Toast.LENGTH_SHORT).show(); } @Override diff --git a/qpython/src/main/java/org/qpython/qpy/utils/NotebookUtil.java b/qpython/src/main/java/org/qpython/qpy/utils/NotebookUtil.java index 97c74fa9aba594f68b54ca80149f311347ade9de..c8e027b2208d2d8f032e2b0633476712c2ca5bb2 100644 --- a/qpython/src/main/java/org/qpython/qpy/utils/NotebookUtil.java +++ b/qpython/src/main/java/org/qpython/qpy/utils/NotebookUtil.java @@ -63,7 +63,8 @@ public class NotebookUtil { * 检查notebook库是否安装 */ public static boolean isNotebookLibInstall(Context context) { - boolean common = new File(context.getFilesDir().getAbsolutePath() + "/lib/notebook.zip").exists(); + boolean common = new File(context.getFilesDir().getAbsolutePath(),"lib/python"+QPyConstants.PyVer+"/site-packages/notebook").exists(); + //boolean common = new File(context.getFilesDir().getAbsolutePath() + "/lib/notebook.zip").exists(); if (NAction.isQPy3(context)) { return common & new File(context.getFilesDir().getAbsoluteFile()+"/bin/jupyter").exists(); } else { diff --git a/qpython/src/main/res/raw/projects3.zip b/qpython/src/main/res/raw/projects3.zip deleted file mode 100644 index 862aacb15a88b8b7b0c9fd6b4eed922b01eeb452..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/res/raw/projects3.zip and /dev/null differ diff --git a/qpython/src/main/res/raw/scripts3.zip b/qpython/src/main/res/raw/scripts3.zip deleted file mode 100644 index 5c454290177104bd01defff518b48475c5893875..0000000000000000000000000000000000000000 Binary files a/qpython/src/main/res/raw/scripts3.zip and /dev/null differ diff --git a/qpython/src/main/res/values-zh-rCN/strings.xml b/qpython/src/main/res/values-zh-rCN/strings.xml index ea8ed7b47333232300bcc8e83de1b051cd903577..7ff2e653ec5f1587e0f2d8a7882f22f5133d1fde 100644 --- a/qpython/src/main/res/values-zh-rCN/strings.xml +++ b/qpython/src/main/res/values-zh-rCN/strings.xml @@ -488,5 +488,7 @@ 《隐私政策》 欢迎使用QPython + 这需要些时间,请检查通知栏进度条 + 关闭进度条后,方可按返回键退出 diff --git a/qpython/src/main/res/values/arrays.xml b/qpython/src/main/res/values/arrays.xml index c24b108a3f982b4a13a0840eed194ea5eab9dde4..152e6e1b11c50d68d62f6c9f2cf6997cea864127 100644 --- a/qpython/src/main/res/values/arrays.xml +++ b/qpython/src/main/res/values/arrays.xml @@ -261,9 +261,7 @@ - private31.mp3 - private32.mp3 - private33.mp3 + resource3.mp3 diff --git a/qpython/src/main/res/values/strings.xml b/qpython/src/main/res/values/strings.xml index d0305a7d5af3959f83d686ed4559088337281b2b..dbd97d8a70dfb32c679d7f98e2cdaf976bbf16d8 100644 --- a/qpython/src/main/res/values/strings.xml +++ b/qpython/src/main/res/values/strings.xml @@ -2,14 +2,8 @@ 1347438995.05 1347438995.05 1347438995.05 - 1347438791.05 - 1347438791.05 - 1347438791.05 + 1651452654 12500 - 1347438610.05 - 20200206.1205 - 20200207.1205 - https://www.qpython.org/contributors.html projects QPYPI @@ -763,5 +757,6 @@ "Please grant the creat shortcut permission. " Privacy Policy Service Agreement + Press the back key to exit after close the progress bar diff --git a/qpython/src/main/res/xml/network_security_config.xml b/qpython/src/main/res/xml/network_security_config.xml index 117f8bdf9062ded1158c9b54433cfcc7fd86f528..f18e1f040a2949792a9af353b99fa853b7e0431e 100644 --- a/qpython/src/main/res/xml/network_security_config.xml +++ b/qpython/src/main/res/xml/network_security_config.xml @@ -1,18 +1,8 @@ - - 127.0.0.1 - localhost - apu2.quseit.com - qpy.io - dl.qpy.io - gist.qpy.io - qpython.org - gist.qpython.org - edu.qpython.org - www.qpython.org - qpypi.qpython.org - qpypi3.qpython.org - - + + + + + \ No newline at end of file diff --git a/qpython/src/os/java/org/qpython/qpy/main/activity/SignInActivity.java b/qpython/src/os/java/org/qpython/qpy/main/activity/SignInActivity.java index 7874ebf02a4d4a25c98ef1e715cf071aa0a2fe0e..56f785891c0914a3252bdea976da195c533c6226 100644 --- a/qpython/src/os/java/org/qpython/qpy/main/activity/SignInActivity.java +++ b/qpython/src/os/java/org/qpython/qpy/main/activity/SignInActivity.java @@ -12,7 +12,7 @@ import android.util.Log; import android.view.View; import android.widget.Toast; -import com.google.android.gms.common.ConnectionResult; +//import com.google.android.gms.common.ConnectionResult; import org.qpython.qpy.R; import org.qpython.qpy.databinding.ActivitySignInBinding;