#android
#Android
Вопрос:
Я хотел бы показывать диалоговое окно выбора пусковой установки только при нажатии пользовательской кнопки и отключать его по умолчанию. Чтобы отключить его по умолчанию, я добавил компонент activity alias disabled в свой манифест приложения. Компонент псевдонима имеет категорию «ПО УМОЛЧАНИЮ» внутри объявления фильтра намерений.
AndroidManifest.xml
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:enabled="false"
android:name=".DefaultActivity"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.categrory.DEFAULT"/>
</intent-filter>
</activity-alias>
При нажатии пользовательской кнопки отключенный компонент включен:
fun resetDefault() {
val packageManager: PackageManager? = fragment.activity?.packageManager
val compName = fragment.activity?.packageName?.let {
ComponentName(
it,
"$it.DefaultActivity"
)
}
if (compName != null) {
packageManager?.setComponentEnabledSetting(
compName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
)
}
val selector = Intent(Intent.ACTION_MAIN)
selector.addCategory(Intent.CATEGORY_HOME)
selector.flags = Intent.FLAG_ACTIVITY_NEW_TASK
fragment.activity?.startActivity(selector)
compName?.let {
packageManager?.setComponentEnabledSetting(
it,
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
PackageManager.DONT_KILL_APP
)
}
}
Проблема в том, что диалоговое окно выбора пусковой установки не отображается, и приложение закрывается. Кто-нибудь может сказать мне, чего не хватает в текущей реализации?