diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a659758a..85755ccb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -133,6 +133,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unit)? = null) {
+ val builder = AlertDialog.Builder(context)
+ val view = LayoutInflater.from(context).inflate(R.layout.dialog_url_handling, null)
+ builder.setView(view)
+
+ val dialog = builder.create()
+ registerDialogOpened(dialog)
+
+ view.findViewById(R.id.button_no).apply {
+ this.setOnClickListener {
+ dialog.dismiss()
+ }
+ }
+
+ view.findViewById(R.id.button_yes).apply {
+ this.setOnClickListener {
+ try {
+ val intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
+ val uri = Uri.fromParts("package", context.packageName, null)
+ intent.data = uri
+ context.startActivity(intent)
+ } catch (e: Throwable) {
+ toast(context, context.getString(R.string.failed_to_show_settings))
+ }
+
+ onYes?.invoke()
+ dialog.dismiss()
+ }
+ }
+
+ dialog.setOnDismissListener {
+ registerDialogClosed(dialog)
+ }
+
+ dialog.show()
+ }
fun showAutomaticBackupDialog(context: Context, skipRestoreCheck: Boolean = false, onClosed: (()->Unit)? = null) {
val dialogAction: ()->Unit = {
@@ -107,7 +145,8 @@ class UIDialogs {
}, UIDialogs.ActionStyle.DANGEROUS),
UIDialogs.Action(context.getString(R.string.restore), {
UIDialogs.showAutomaticRestoreDialog(context, StateApp.instance.scope);
- }, UIDialogs.ActionStyle.PRIMARY));
+ }, UIDialogs.ActionStyle.PRIMARY)
+ );
else {
dialogAction();
}
diff --git a/app/src/main/java/com/futo/platformplayer/states/StateAnnouncement.kt b/app/src/main/java/com/futo/platformplayer/states/StateAnnouncement.kt
index 76d06783..9bced80b 100644
--- a/app/src/main/java/com/futo/platformplayer/states/StateAnnouncement.kt
+++ b/app/src/main/java/com/futo/platformplayer/states/StateAnnouncement.kt
@@ -1,6 +1,7 @@
package com.futo.platformplayer.states
import android.content.Context
+import com.futo.platformplayer.UIDialogs
import com.futo.platformplayer.api.http.ManagedHttpClient
import com.futo.platformplayer.constructs.Event0
import com.futo.platformplayer.constructs.Event1
@@ -256,9 +257,6 @@ class StateAnnouncement {
}
-
-
-
fun registerDidYouKnow() {
val random = Random();
val message: String? = when (random.nextInt(4 * 18 + 1)) {
@@ -294,6 +292,23 @@ class StateAnnouncement {
}
}
+ fun registerDefaultHandlerAnnouncement() {
+ registerAnnouncement(
+ "default-url-handler",
+ "Allow Grayjay to open URLs",
+ "Click here to allow Grayjay to open URLs",
+ AnnouncementType.SESSION_RECURRING,
+ null,
+ null,
+ "Allow"
+ ) {
+ UIDialogs.showUrlHandlingPrompt(StateApp.instance.context) {
+ instance.neverAnnouncement("default-url-handler")
+ instance.onAnnouncementChanged.emit()
+ }
+ }
+ }
+
companion object {
private var _instance: StateAnnouncement? = null;
val instance: StateAnnouncement
diff --git a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt
index c30a4311..bfdc4836 100644
--- a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt
+++ b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt
@@ -543,6 +543,7 @@ class StateApp {
);
}
+ StateAnnouncement.instance.registerDefaultHandlerAnnouncement();
StateAnnouncement.instance.registerDidYouKnow();
Logger.i(TAG, "MainApp Started: Finished");
}
diff --git a/app/src/main/res/layout/dialog_url_handling.xml b/app/src/main/res/layout/dialog_url_handling.xml
new file mode 100644
index 00000000..fa860162
--- /dev/null
+++ b/app/src/main/res/layout/dialog_url_handling.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8552e9c4..1bb406e4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -292,6 +292,8 @@
Clear external Downloads directory
Change external General directory
Change tabs visible on the home screen
+ Link Handling
+ Allow Grayjay to handle links
Change the external directory for general files
Clear the external storage for download files
Change the external storage for download files
@@ -678,6 +680,10 @@
" + Tax"
New playlist
Add to new playlist
+ URL Handling
+ Allow Grayjay to handle specific URLs?
+ When you click \'Yes\', the Grayjay app settings will open.\n\nThere, navigate to:\n1. "Open by default" or "Set as default" section.\nYou might find this option directly or under \'Advanced\' settings, depending on your device.\n\n2. Choose \'Open supported links\' for Grayjay.\n\n(some devices have this listed under \'Default Apps\' in the main settings followed by selecting Grayjay for relevant categories)
+ Failed to show settings
- Recommendations
- Subscriptions
diff --git a/app/src/unstable/AndroidManifest.xml b/app/src/unstable/AndroidManifest.xml
index 74db3f15..d053978f 100644
--- a/app/src/unstable/AndroidManifest.xml
+++ b/app/src/unstable/AndroidManifest.xml
@@ -6,39 +6,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-