From 547c4c9e9e42f2337605167121e74f0096bc801e Mon Sep 17 00:00:00 2001 From: xdavidwu Date: Tue, 11 Jun 2019 14:00:25 +0800 Subject: [PATCH] NetworkOnMainThreadException workaround --- .../java/org/safsftp/SFTPDocumentsProvider.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/org/safsftp/SFTPDocumentsProvider.java b/src/main/java/org/safsftp/SFTPDocumentsProvider.java index 89304a6..a8d0d80 100644 --- a/src/main/java/org/safsftp/SFTPDocumentsProvider.java +++ b/src/main/java/org/safsftp/SFTPDocumentsProvider.java @@ -8,6 +8,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.ParcelFileDescriptor; +import android.os.StrictMode; import android.preference.PreferenceManager; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; @@ -91,6 +92,7 @@ public class SFTPDocumentsProvider extends DocumentsProvider { lthread.handler.sendMessage(msg); } catch(Exception e){ + Log.e("SFTP","connect "+e.toString()); Message msg=lthread.handler.obtainMessage(); msg.obj=e.toString(); lthread.handler.sendMessage(msg); @@ -101,6 +103,14 @@ public class SFTPDocumentsProvider extends DocumentsProvider { return true; } + private void editPolicyIfMainThread(){ + //FIXME + //if(Looper.getMainLooper()==Looper.myLooper()){ + // Log.w("SFTP","We're on main thread."); + StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.LAX); + //} + } + @Override public boolean onCreate() { lthread=new ToastThread(getContext()); @@ -113,6 +123,7 @@ public class SFTPDocumentsProvider extends DocumentsProvider { if (!"r".equals(mode)) { throw new UnsupportedOperationException("Mode "+mode+" is not supported yet."); } + editPolicyIfMainThread(); if(!retriveConnection()){ //TODO notify error return null; @@ -139,6 +150,7 @@ public class SFTPDocumentsProvider extends DocumentsProvider { String[] projection,String sortOrder) { MatrixCursor result=new MatrixCursor(projection!=null?projection:DEFAULT_DOC_PROJECTION); Log.v("SFTP","qcf "+parentDocumentId+" on "+host+":"+port); + editPolicyIfMainThread(); if(!retriveConnection()){ //TODO notify error return result; @@ -174,6 +186,7 @@ public class SFTPDocumentsProvider extends DocumentsProvider { public Cursor queryDocument(String documentId, String[] projection) { MatrixCursor result=new MatrixCursor(projection!=null?projection:DEFAULT_DOC_PROJECTION); Log.v("SFTP","qf "+documentId+" on "+host+":"+port); + editPolicyIfMainThread(); if(!retriveConnection()){ //TODO notify error return result; -- 2.43.0