diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 1069af8..eb142f7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
targetSdkVersion 28
versionCode 8
versionName "1.3-alpha"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
@@ -33,14 +33,14 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'com.android.support:support-core-ui:28.0.0-rc02'
- implementation 'com.android.support:support-fragment:28.0.0-rc02'
- implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
- implementation 'com.android.support:preference-v7:28.0.0-rc02'
- implementation 'com.android.support.constraint:constraint-layout:1.1.3'
- implementation 'com.android.support:design:28.0.0-rc02'
- implementation 'com.android.support:localbroadcastmanager:28.0.0-rc02'
+ implementation 'androidx.legacy:legacy-support-core-ui:1.0.0'
+ implementation 'androidx.fragment:fragment:1.0.0'
+ implementation 'androidx.appcompat:appcompat:1.0.0'
+ implementation 'androidx.preference:preference:1.0.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
+ implementation 'com.google.android.material:material:1.0.0'
+ implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}
diff --git a/app/src/androidTest/java/net/typeblog/shelter/ExampleInstrumentedTest.java b/app/src/androidTest/java/net/typeblog/shelter/ExampleInstrumentedTest.java
index a7e6942..78c216f 100644
--- a/app/src/androidTest/java/net/typeblog/shelter/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/net/typeblog/shelter/ExampleInstrumentedTest.java
@@ -1,8 +1,8 @@
package net.typeblog.shelter;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
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 67864e2..a9753b6 100644
--- a/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java
+++ b/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java
@@ -12,12 +12,12 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.ParcelFileDescriptor;
-import android.os.RemoteException;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
-import android.support.annotation.Nullable;
import android.webkit.MimeTypeMap;
+import androidx.annotation.Nullable;
+
import net.typeblog.shelter.ShelterApplication;
import net.typeblog.shelter.util.CrossProfileDocumentsProvider;
import net.typeblog.shelter.util.Utility;
diff --git a/app/src/main/java/net/typeblog/shelter/services/KillerService.java b/app/src/main/java/net/typeblog/shelter/services/KillerService.java
index 5074a8e..66b4182 100644
--- a/app/src/main/java/net/typeblog/shelter/services/KillerService.java
+++ b/app/src/main/java/net/typeblog/shelter/services/KillerService.java
@@ -4,7 +4,8 @@ import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
import net.typeblog.shelter.util.Utility;
diff --git a/app/src/main/java/net/typeblog/shelter/services/ShelterService.java b/app/src/main/java/net/typeblog/shelter/services/ShelterService.java
index 5b7debb..3de2045 100644
--- a/app/src/main/java/net/typeblog/shelter/services/ShelterService.java
+++ b/app/src/main/java/net/typeblog/shelter/services/ShelterService.java
@@ -17,7 +17,8 @@ import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
import net.typeblog.shelter.R;
import net.typeblog.shelter.ShelterApplication;
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 efc4fe3..1fe1da8 100644
--- a/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java
+++ b/app/src/main/java/net/typeblog/shelter/ui/AppListAdapter.java
@@ -5,14 +5,15 @@ import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
import net.typeblog.shelter.R;
import net.typeblog.shelter.services.ILoadIconCallback;
import net.typeblog.shelter.services.IShelterService;
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 8976dc7..ba4459b 100644
--- a/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java
+++ b/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java
@@ -12,14 +12,6 @@ import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -28,6 +20,15 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.Fragment;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
import net.typeblog.shelter.R;
import net.typeblog.shelter.services.IAppInstallCallback;
import net.typeblog.shelter.services.IGetAppsCallback;
diff --git a/app/src/main/java/net/typeblog/shelter/ui/DummyActivity.java b/app/src/main/java/net/typeblog/shelter/ui/DummyActivity.java
index e11d468..f7de282 100644
--- a/app/src/main/java/net/typeblog/shelter/ui/DummyActivity.java
+++ b/app/src/main/java/net/typeblog/shelter/ui/DummyActivity.java
@@ -13,14 +13,14 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.StrictMode;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.widget.Toast;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import net.typeblog.shelter.R;
import net.typeblog.shelter.ShelterApplication;
import net.typeblog.shelter.receivers.ShelterDeviceAdminReceiver;
-import net.typeblog.shelter.services.FileShuttleService;
import net.typeblog.shelter.services.IAppInstallCallback;
import net.typeblog.shelter.services.IFileShuttleService;
import net.typeblog.shelter.services.IFileShuttleServiceCallback;
diff --git a/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java b/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java
index 5c14ef2..b2a0908 100644
--- a/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java
+++ b/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java
@@ -7,23 +7,25 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.drawable.Icon;
import android.net.Uri;
+import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import android.support.annotation.Nullable;
-import android.support.design.widget.TabLayout;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.viewpager.widget.ViewPager;
+
+import com.google.android.material.tabs.TabLayout;
+
import net.typeblog.shelter.R;
import net.typeblog.shelter.ShelterApplication;
import net.typeblog.shelter.receivers.ShelterDeviceAdminReceiver;
@@ -36,8 +38,6 @@ import net.typeblog.shelter.util.SettingsManager;
import net.typeblog.shelter.util.UriForwardProxy;
import net.typeblog.shelter.util.Utility;
-import java.io.IOException;
-
public class MainActivity extends AppCompatActivity {
public static final String BROADCAST_CONTEXT_MENU_CLOSED = "net.typeblog.shelter.broadcast.CONTEXT_MENU_CLOSED";
diff --git a/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java b/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java
index 121b305..435a38d 100644
--- a/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java
+++ b/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java
@@ -1,8 +1,9 @@
package net.typeblog.shelter.ui;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import net.typeblog.shelter.R;
diff --git a/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java b/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java
index d2c6a23..8eefc6a 100644
--- a/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java
+++ b/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java
@@ -4,9 +4,10 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v7.preference.CheckBoxPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceFragmentCompat;
+
+import androidx.preference.CheckBoxPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
import net.typeblog.shelter.R;
import net.typeblog.shelter.util.SettingsManager;
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 c29c240..aba2961 100644
--- a/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java
+++ b/app/src/main/java/net/typeblog/shelter/util/CrossProfileDocumentsProvider.java
@@ -13,7 +13,8 @@ import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.provider.DocumentsContract;
import android.provider.DocumentsProvider;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
import net.typeblog.shelter.R;
import net.typeblog.shelter.services.FileShuttleService;
@@ -21,7 +22,6 @@ import net.typeblog.shelter.services.IFileShuttleService;
import net.typeblog.shelter.services.IFileShuttleServiceCallback;
import net.typeblog.shelter.ui.DummyActivity;
-import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;
diff --git a/app/src/main/java/net/typeblog/shelter/util/FileProviderProxy.java b/app/src/main/java/net/typeblog/shelter/util/FileProviderProxy.java
index 116c0c4..a2237f4 100644
--- a/app/src/main/java/net/typeblog/shelter/util/FileProviderProxy.java
+++ b/app/src/main/java/net/typeblog/shelter/util/FileProviderProxy.java
@@ -2,11 +2,11 @@ package net.typeblog.shelter.util;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
+
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
import java.io.FileNotFoundException;
-import java.io.IOException;
// A simple and naïve FileProvider which forwards content Uris
// to a given Uri from another profile through UriForwardProxy
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 19ef19d..67705b3 100644
--- a/app/src/main/java/net/typeblog/shelter/util/Utility.java
+++ b/app/src/main/java/net/typeblog/shelter/util/Utility.java
@@ -17,7 +17,6 @@ import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
-import android.net.Uri;
import android.os.Build;
import android.os.UserManager;
import android.provider.MediaStore;
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 83608bb..347ec1c 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,19 +1,19 @@
-
-
-
-
-
+
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index d62e8ac..4a4b2bc 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -1,16 +1,16 @@
-
-
-
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/app_list_item.xml b/app/src/main/res/layout/app_list_item.xml
index 6f69195..47e637e 100644
--- a/app/src/main/res/layout/app_list_item.xml
+++ b/app/src/main/res/layout/app_list_item.xml
@@ -1,5 +1,5 @@
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_list.xml b/app/src/main/res/layout/fragment_list.xml
index 8f3b166..d2cfa48 100644
--- a/app/src/main/res/layout/fragment_list.xml
+++ b/app/src/main/res/layout/fragment_list.xml
@@ -1,10 +1,10 @@
-
-
-
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preferences_settings.xml b/app/src/main/res/xml/preferences_settings.xml
index 42bca5e..934e6bc 100644
--- a/app/src/main/res/xml/preferences_settings.xml
+++ b/app/src/main/res/xml/preferences_settings.xml
@@ -1,34 +1,34 @@
-
-
-
-
+
-
-
-
-
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 743d692..8de5058 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,6 +6,8 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
+android.enableJetifier=true
+android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit