Я не нашел способа вставить атрибут type
для намерения в xml
.Но кажется, что деятельность с невидимой темой может имитировать то, что я хочу.
Как сказано в документации :
Начать одно действие с другого
Статические ярлыки не могут иметь пользовательских флагов намерений.В первом назначении статического ярлыка всегда будут установлены Intent.FLAG_ACTIVITY_NEW_TASK и Intent.FLAG_ACTIVITY_CLEAR_TASK.Это означает, что когда приложение уже запущено, все существующие действия в нем будут уничтожены при запуске статического ярлыка.Если это поведение нежелательно, вы можете использовать батутное действие или невидимое действие, которое запускает другое действие в Activity.onCreate (Bundle), а затем вызывает Activity.finish ():
В файле AndroidManifest.xmlбатутная активность должна включать в себя назначение атрибута android: taskAffinity = "".В файле ресурсов ярлыков намерение в статическом ярлыке должно ссылаться на действие батута.Для получения дополнительной информации о действиях на батуте, прочитайте Запуск одного занятия из другого.
мы можем добавить android:taskAffinity=""
в файл InvisibleActivity в manifest
, чтобы приложение не переходило в фоновый режим при нажатии кнопки home.
Это моя настройка невидимой активности в AndroidManifest.xml
<activity
android:name=".InvisibleActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
Это целый метод onCreate()
в моей невидимой деятельности:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "https://www.example.com");
sendIntent.setType("text/plain");
startActivity(sendIntent);
finish();
}
и, наконец, этомой статический ярлык xml-файла:
<shortcut
android:enabled="true"
android:shortcutId="share_app_shortcut"
android:icon="@drawable/ic_share"
android:shortcutShortLabel="@string/shortcut_share_description">
<intent
android:action="android.intent.action.VIEW"
android:targetClass=".InvisibleActivity"
android:targetPackage="com.example.shortcut">
</intent>
</shortcut>