From 872b288419a28af588557cbd108cc4a6a799adea Mon Sep 17 00:00:00 2001 From: tonymanou Date: Mon, 25 Feb 2019 22:16:38 +0100 Subject: [PATCH 1/7] Fix non-final lock --- .../typeblog/shelter/util/CrossProfileDocumentsProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java index aba2961..5e761ec 100644 --- a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java +++ b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java @@ -50,7 +50,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { // We just release the service when idle, thus enabling the // system to release memory private Runnable mReleaseServiceTask = this::releaseService; - private Object mLock = new Object(); + private final Object mLock = new Object(); private void doBindService() { // Call DummyActivity on the other side to bind the service for us From cdcd9844a5ce5184fe3b2a7718265ef475002048 Mon Sep 17 00:00:00 2001 From: tonymanou Date: Tue, 26 Feb 2019 00:19:56 +0100 Subject: [PATCH 2/7] No need to store root view in viewholder --- .../typeblog/shelter/ui/AppListAdapter.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java b/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java index a4a514b..a019d7f 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java +++ b/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java @@ -29,16 +29,14 @@ import java.util.stream.Collectors; public class AppListAdapter extends RecyclerView.Adapter { class ViewHolder extends RecyclerView.ViewHolder { - private ViewGroup mView; private ImageView mIcon; private TextView mTitle; private TextView mPackage; // This text view shows the order of all selected items private TextView mSelectOrder; int mIndex = -1; - ViewHolder(ViewGroup view) { + ViewHolder(View view) { super(view); - mView = view; mIcon = view.findViewById(R.id.list_app_icon); mTitle = view.findViewById(R.id.list_app_title); mPackage = view.findViewById(R.id.list_app_package); @@ -57,7 +55,7 @@ public class AppListAdapter extends RecyclerView.Adapter Date: Tue, 26 Feb 2019 22:34:09 +0100 Subject: [PATCH 3/7] Use our context's layout inflater --- app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java b/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java index a019d7f..096aad0 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java +++ b/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java @@ -325,7 +325,7 @@ public class AppListAdapter extends RecyclerView.Adapter Date: Tue, 26 Feb 2019 22:31:14 +0100 Subject: [PATCH 4/7] Fix string comparison --- app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java b/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java index 56fd315..84d4155 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java +++ b/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java @@ -98,7 +98,7 @@ public class AppListFragment extends BaseFragment { @Override public void onReceive(Context context, Intent intent) { String query = intent.getStringExtra("text"); - if (query == "") { + if ("".equals(query)) { // Consider empty query as null query = null; } From 60a8fdf960e409ba89e726741cee1a288264dbe1 Mon Sep 17 00:00:00 2001 From: tonymanou Date: Tue, 26 Feb 2019 22:32:51 +0100 Subject: [PATCH 5/7] Remove redundant things --- .../typeblog/shelter/util/CrossProfileDocumentsProvider.java | 4 ++-- app/src/main/java/net/typeblog/shelter/util/Utility.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java index 5e761ec..25a5b1a 100644 --- a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java +++ b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java @@ -137,7 +137,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { public Cursor queryDocument(String documentId, String[] projection) { ensureServiceBound(); final MatrixCursor result = new MatrixCursor(projection == null ? DEFAULT_DOCUMENT_PROJECTION : projection); - Map fileInfo = null; + Map fileInfo; try { fileInfo = mService.loadFileMeta(documentId); } catch (RemoteException e) { @@ -150,7 +150,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { @Override public Cursor queryChildDocuments(String parentDocumentId, String[] projection, String sortOrder) { ensureServiceBound(); - List> files = null; + List> files; try { files = mService.loadFiles(parentDocumentId); } catch (RemoteException e) { diff --git a/app/src/main/java/net/typeblog/shelter/util/Utility.java b/app/src/main/java/net/typeblog/shelter/util/Utility.java index b36585b..3d3cf7a 100644 --- a/app/src/main/java/net/typeblog/shelter/util/Utility.java +++ b/app/src/main/java/net/typeblog/shelter/util/Utility.java @@ -353,7 +353,7 @@ public class Utility { public static String getFileExtension(String filePath) { int index = filePath.lastIndexOf("."); if (index > 0) { - return filePath.substring(index + 1, filePath.length()); + return filePath.substring(index + 1); } else { return null; } From ba46ea599b20391ce30cc93a14876cd93acaed31 Mon Sep 17 00:00:00 2001 From: tonymanou Date: Tue, 26 Feb 2019 22:33:15 +0100 Subject: [PATCH 6/7] Make constants final --- .../java/net/typeblog/shelter/services/FreezeService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/typeblog/shelter/services/FreezeService.java b/app/src/main/java/net/typeblog/shelter/services/FreezeService.java index ced1c44..5d7502e 100644 --- a/app/src/main/java/net/typeblog/shelter/services/FreezeService.java +++ b/app/src/main/java/net/typeblog/shelter/services/FreezeService.java @@ -50,10 +50,10 @@ public class FreezeService extends Service { } // An app being inactive for this amount of time will be frozen - private static long APP_INACTIVE_TIMEOUT = 1000; + private static final long APP_INACTIVE_TIMEOUT = 1000; // Notification ID - private static int NOTIFICATION_ID = 0xe49c0; + private static final int NOTIFICATION_ID = 0xe49c0; // The actual receiver of the screen-off event private BroadcastReceiver mLockReceiver = new BroadcastReceiver() { From 0ca210a7d93021a811282423014d5d5d1f9f12de Mon Sep 17 00:00:00 2001 From: tonymanou Date: Tue, 26 Feb 2019 22:48:25 +0100 Subject: [PATCH 7/7] Generic values passed to AIDL are Serializable, not simple Object --- .../typeblog/shelter/services/FileShuttleService.java | 9 +++++---- .../shelter/util/CrossProfileDocumentsProvider.java | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java b/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java index a9753b6..5350e7a 100644 --- a/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java +++ b/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -46,9 +47,9 @@ public class FileShuttleService extends Service { } @Override - public List loadFiles(String path) { + public List> loadFiles(String path) { resetSuicideTask(); - ArrayList ret = new ArrayList<>(); + ArrayList> ret = new ArrayList<>(); File f = new File(resolvePath(path)); if (f.listFiles() != null) { for (File child : f.listFiles()) { @@ -59,10 +60,10 @@ public class FileShuttleService extends Service { } @Override - public Map loadFileMeta(String path) { + public Map loadFileMeta(String path) { resetSuicideTask(); File f = new File(resolvePath(path)); - HashMap map = new HashMap<>(); + HashMap map = new HashMap<>(); map.put(DocumentsContract.Document.COLUMN_DOCUMENT_ID, f.getAbsolutePath()); map.put(DocumentsContract.Document.COLUMN_DISPLAY_NAME, f.getName()); map.put(DocumentsContract.Document.COLUMN_SIZE, f.length()); diff --git a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java index 25a5b1a..3786f2b 100644 --- a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java +++ b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java @@ -22,6 +22,7 @@ import net.typeblog.shelter.services.IFileShuttleService; import net.typeblog.shelter.services.IFileShuttleServiceCallback; import net.typeblog.shelter.ui.DummyActivity; +import java.io.Serializable; import java.util.List; import java.util.Map; @@ -137,7 +138,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { public Cursor queryDocument(String documentId, String[] projection) { ensureServiceBound(); final MatrixCursor result = new MatrixCursor(projection == null ? DEFAULT_DOCUMENT_PROJECTION : projection); - Map fileInfo; + Map fileInfo; try { fileInfo = mService.loadFileMeta(documentId); } catch (RemoteException e) { @@ -150,7 +151,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { @Override public Cursor queryChildDocuments(String parentDocumentId, String[] projection, String sortOrder) { ensureServiceBound(); - List> files; + List> files; try { files = mService.loadFiles(parentDocumentId); } catch (RemoteException e) { @@ -161,7 +162,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { result.setNotificationUri(getContext().getContentResolver(), DocumentsContract.buildDocumentUri(AUTHORITY, parentDocumentId)); - for (Map file : files) { + for (Map file : files) { includeFile(result, file); } return result; @@ -223,7 +224,7 @@ public class CrossProfileDocumentsProvider extends DocumentsProvider { } } - private void includeFile(MatrixCursor cursor, Map fileInfo) { + private void includeFile(MatrixCursor cursor, Map fileInfo) { final MatrixCursor.RowBuilder row = cursor.newRow(); for (String col : DEFAULT_DOCUMENT_PROJECTION) { row.add(col, fileInfo.get(col));