У меня проблемы с объявлением фильтра Intent
. Почему следующий код не работает?
Activity
, как объявлено в AndroidManifest.xml
:
<activity
android:name="com.twoplay.smb.SmbLoginActivity"
android:label="@string/smb_login_activity_name"
android:theme="@style/SmbLoginTheme"
>
<intent-filter>
<action android:name="android.provider.action.DOCUMENT_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content"
android:host="com.twoplay.netplayer.smb"
android:mimeType="*/*" />
</intent-filter>
</activity>
Код для запуска действия:
Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_SETTINGS);
intent.setPackage("com.twoplay.netplayer");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("content://com.twoplay.netplayer.smb/tree/share%2FLOTHLORIEN"));
intent.setType("image/png");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, "Failed to view settings in application",e);
}
При выполнении startActivity
выдает следующее исключение:
android.content.ActivityNotFoundException: No Activity found to
handle Intent { act=android.provider.action.DOCUMENT_SETTINGS
cat=[android.intent.category.DEFAULT] typ=image/png }
В контексте, я пытаюсь реализовать настройки в документе провайдера документов. Код startActivity вырезан и вставлен из исходного кода Google для приложения пользовательского интерфейса провайдера документов, но выполняется в рамках собственного теста, чтобы я мог его отладить. Пользовательский интерфейс провайдера документов правильно отображает меню «Отображать в», но нажатие на этот пункт меню ничего не делает, и в пользовательском интерфейсе нет видимых ошибок, хотя основной источник android предполагает, что должен быть вызов Log.e, если вызов startActivity потерпел неудачу. В архиве git указано, что исходный код пользовательского интерфейса провайдера документов, на который я смотрел, был "Android 10 Release" (хотя, вероятно, он не совпадает с тем, что есть на моем устройстве).
Запускается целевое действие без проблем при запуске другими способами, поэтому нет очевидных проблем с целевой активностью. Точка останова на Activity.onCreate никогда не достигается при использовании приведенного выше кода. В файле журнала нет ошибок или предупреждений. И никакой явно релевантной информации или отладочных сообщений.
Работает на Android Q.