Вызов startActivity () вне контекста действия

Вы можете перевести символы подстановки в регулярное выражение:

*.txt -> ^.+\.txt$

POS??.dat _> ^POS..\.dat$

Используйте метод Regex.Escape, чтобы экранировать символы, которые не являются символами подстановки, в буквенные строки для шаблона (например, преобразование ".txt" в "\.txt").

Подстановочный знак * переводится в .+, а ? переводится в .

Поставьте ^ в начале паттерна, чтобы соответствовать началу строки, и $ в конце чтобы соответствовать концу строки.

Теперь вы можете использовать метод Regex.IsMatch, чтобы проверить, соответствует ли имя файла шаблону.

338
задан Luksprog 24 November 2012 в 21:40
поделиться

2 ответа

версия Kotlin

val intent = Intent(Intent.ACTION_EDIT, ContactsContract.Profile.CONTENT_URI)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
this.startActivity(intent)
0
ответ дан 23 November 2019 в 00:39
поделиться

В Android 28(Android P) startActivity

if ((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) == 0
        && (targetSdkVersion < Build.VERSION_CODES.N
                || targetSdkVersion >= Build.VERSION_CODES.P)
        && (options == null
                || ActivityOptions.fromBundle(options).getLaunchTaskId() == -1)) {
    throw new AndroidRuntimeException(
            "Calling startActivity() from outside of an Activity "
                    + " context requires the FLAG_ACTIVITY_NEW_TASK flag."
                    + " Is this really what you want?");
}

Так лучший способ, добавляют FLAG_ACTIVITY_NEW_TASK

Intent intent = new Intent(context, XXXActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
context.startActivity(intent);
2
ответ дан 23 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: