diff options
Diffstat (limited to 'app/src/main/java/com/javispedro/wallmotion/SettingsActivity.java')
-rw-r--r-- | app/src/main/java/com/javispedro/wallmotion/SettingsActivity.java | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/app/src/main/java/com/javispedro/wallmotion/SettingsActivity.java b/app/src/main/java/com/javispedro/wallmotion/SettingsActivity.java index 6919ea1..5fee7df 100644 --- a/app/src/main/java/com/javispedro/wallmotion/SettingsActivity.java +++ b/app/src/main/java/com/javispedro/wallmotion/SettingsActivity.java @@ -20,14 +20,19 @@ import androidx.preference.PreferenceManager; public class SettingsActivity extends AppCompatActivity { private static final String TAG = "SettingsActivity"; + public static final String ACTION_CHOOSE_FILE = "com.javispedro.wallmotion.choose_file"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.settings_activity); + + SettingsFragment fragment = new SettingsFragment(); getSupportFragmentManager() .beginTransaction() - .replace(R.id.settings, new SettingsFragment()) + .replace(R.id.settings, fragment) .commit(); + ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); @@ -41,6 +46,8 @@ public class SettingsActivity extends AppCompatActivity { } public static class SettingsFragment extends PreferenceFragmentCompat { + private static final String TAG = "SettingsFragment"; + private final static int PICK_VIDEO_FILE = 1; @Override @@ -50,11 +57,7 @@ public class SettingsActivity extends AppCompatActivity { video_file.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType("video/*"); - intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); - startActivityForResult(intent, PICK_VIDEO_FILE); + openVideoFilePicker(); return true; } }); @@ -70,6 +73,16 @@ public class SettingsActivity extends AppCompatActivity { } @Override + public void onStart() { + super.onStart(); + Intent launchIntent = getActivity().getIntent(); + if (launchIntent != null && launchIntent.getAction().equals(ACTION_CHOOSE_FILE)) { + openVideoFilePicker(); + getActivity().finish(); + } + } + + @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { switch (requestCode) { @@ -82,6 +95,14 @@ public class SettingsActivity extends AppCompatActivity { } } + private void openVideoFilePicker() { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setType("video/*"); + intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); + startActivityForResult(intent, PICK_VIDEO_FILE); + } + private void setVideoFile(Uri uri) { ContentResolver resolver = getContext().getContentResolver(); @@ -89,6 +110,12 @@ public class SettingsActivity extends AppCompatActivity { String cur_value = getStringPref(getString(R.string.settings_video_file_key)); if (!TextUtils.isEmpty(cur_value)) { Uri cur_uri = Uri.parse(cur_value); + + if (cur_uri.equals(uri)) { + Log.d(TAG, "identical uri selected"); + return; + } + Log.d(TAG, "release persistable uri permission on uri: " + cur_uri.toString()); try { resolver.releasePersistableUriPermission(cur_uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); |