~xdavidwu/saf-sftp

547c4c9e9e42f2337605167121e74f0096bc801e — xdavidwu 4 years ago 4191546
NetworkOnMainThreadException workaround
1 files changed, 13 insertions(+), 0 deletions(-)

M src/main/java/org/safsftp/SFTPDocumentsProvider.java
M src/main/java/org/safsftp/SFTPDocumentsProvider.java => src/main/java/org/safsftp/SFTPDocumentsProvider.java +13 -0
@@ 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;