Skip to content

Commit a87d39d

Browse files
authored
Merge pull request #4508 from EmmanuelMess/emmanuelmess/fix/cdata_text_2
2 parents ec2efd6 + 5ac0291 commit a87d39d

File tree

4 files changed

+44
-11
lines changed

4 files changed

+44
-11
lines changed

app/src/main/java/com/amaze/filemanager/ui/activities/superclasses/PermissionsActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,13 +241,15 @@ private void requestPermission(
241241
*/
242242
public void requestAllFilesAccess(@NonNull final OnPermissionGranted onPermissionGranted) {
243243
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
244+
final boolean hasHtml = true;
244245
final MaterialDialog materialDialog =
245246
GeneralDialogCreation.showBasicDialog(
246247
this,
247248
R.string.grant_all_files_permission,
248249
R.string.grantper,
249250
R.string.grant,
250-
R.string.cancel);
251+
R.string.cancel,
252+
hasHtml);
251253
materialDialog.getActionButton(DialogAction.NEGATIVE).setOnClickListener(v -> finish());
252254
materialDialog
253255
.getActionButton(DialogAction.POSITIVE)

app/src/main/java/com/amaze/filemanager/ui/dialogs/GeneralDialogCreation.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@
9696
import android.text.Spanned;
9797
import android.text.TextUtils;
9898
import android.text.format.Formatter;
99+
import android.text.method.LinkMovementMethod;
100+
import android.text.util.Linkify;
99101
import android.view.LayoutInflater;
100102
import android.view.View;
101103
import android.widget.LinearLayout;
@@ -124,23 +126,43 @@ public class GeneralDialogCreation {
124126
private static final Logger LOG = LoggerFactory.getLogger(GeneralDialogCreation.class);
125127

126128
public static MaterialDialog showBasicDialog(
127-
ThemedActivity themedActivity,
129+
@NonNull ThemedActivity themedActivity,
128130
@StringRes int content,
129131
@StringRes int title,
130132
@StringRes int postiveText,
131133
@StringRes int negativeText) {
134+
return showBasicDialog(themedActivity, content, title, postiveText, negativeText, false);
135+
}
136+
137+
public static MaterialDialog showBasicDialog(
138+
@NonNull ThemedActivity themedActivity,
139+
@StringRes int content,
140+
@StringRes int title,
141+
@StringRes int postiveText,
142+
@StringRes int negativeText,
143+
boolean hasHtml) {
132144
int accentColor = themedActivity.getAccent();
133-
MaterialDialog.Builder a =
145+
MaterialDialog.Builder dialogBuilder =
134146
new MaterialDialog.Builder(themedActivity)
135-
.content(content)
147+
.content("") // HACK make it empty and then fill it manually for links to work
136148
.widgetColor(accentColor)
137149
.theme(themedActivity.getAppTheme().getMaterialDialogTheme())
138150
.title(title)
139151
.positiveText(postiveText)
140152
.positiveColor(accentColor)
141153
.negativeText(negativeText)
142154
.negativeColor(accentColor);
143-
return a.build();
155+
MaterialDialog dialog = dialogBuilder.build();
156+
157+
if (hasHtml) {
158+
dialog.getContentView().setMovementMethod(LinkMovementMethod.getInstance());
159+
dialog.getContentView().setAutoLinkMask(Linkify.WEB_URLS);
160+
dialog.getContentView().setLinksClickable(true);
161+
dialog
162+
.getContentView()
163+
.setText(HtmlCompat.fromHtml(themedActivity.getString(content), FROM_HTML_MODE_COMPACT));
164+
}
165+
return dialog;
144166
}
145167

146168
public static MaterialDialog showNameDialog(

app/src/main/res/values/strings.xml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -776,9 +776,15 @@ You only need to do this once, until the next time you select a new location for
776776
<string name="select_similar">Select similar</string>
777777
<string name="select_fill">Select fill</string>
778778
<string name="error_fetching_google_play_product_list">Error fetching product list from Google Play.</string>
779-
<string name="grant_all_files_permission"><html><body>Since Android 11, Google requests File Managers to request user permission for managing all files on the device. Details <a href="https://developer.android.com/training/data-storage/manage-all-files" target="_blank">here</a>.
780-
\n\nAmaze File Manager needs this permission too. After pressing \'Grant\', please select <b>Allow access to manage all files</b> option on the next screen.
781-
\n\n<font color='#ff6347'><i>Canceling this dialog will exit the app.</i></font></body></html></string>
779+
<string name="grant_all_files_permission"><![CDATA[
780+
<html>
781+
<body>
782+
Since Android 11, Google requests File Managers to request user permission for managing all files on the device. Details available at https://developer.android.com/training/data-storage/manage-all-files.<br/><br/>
783+
Amaze File Manager needs this permission too. After pressing &apos;Grant&apos;, please select <b>Allow access to manage all files</b> option on the next screen.<br/><br/>
784+
<font color=&apos;#ff6347&apos;><i>Canceling this dialog will exit the app.</i></font>
785+
</body>
786+
</html>
787+
]]></string>
782788
<string name="user_apps">User apps</string>
783789
<string name="appearance">Appearance</string>
784790
<string name="behavior">Behavior</string>

app/src/test/java/com/amaze/filemanager/ui/activities/PermissionsActivityTest.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import android.os.Build.VERSION_CODES.P
2929
import android.os.Build.VERSION_CODES.R
3030
import android.os.storage.StorageManager
3131
import android.provider.Settings
32+
import androidx.core.text.HtmlCompat
33+
import androidx.core.text.HtmlCompat.FROM_HTML_MODE_COMPACT
3234
import androidx.lifecycle.Lifecycle
3335
import androidx.test.core.app.ActivityScenario
3436
import androidx.test.core.app.ApplicationProvider
@@ -128,9 +130,10 @@ class PermissionsActivityTest {
128130
this.titleView.text,
129131
)
130132
assertEquals(
131-
activity.getString(
132-
com.amaze.filemanager.R.string.grant_all_files_permission,
133-
),
133+
HtmlCompat.fromHtml(
134+
activity.getString(com.amaze.filemanager.R.string.grant_all_files_permission),
135+
FROM_HTML_MODE_COMPACT,
136+
).toString(),
134137
this.contentView?.text.toString(),
135138
)
136139
this.getActionButton(DialogAction.POSITIVE).run {

0 commit comments

Comments
 (0)