Почему мой Android Box не меняет панель запуска по умолчанию? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть приложение Android, и я хочу, чтобы оно заменило средство запуска по умолчанию на моем android ящике. Мой файл AndroidManifest. xml содержит следующие строки:

<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:hardwareAccelerated="true"
android:windowSoftInputMode="stateAlwaysHidden"
android:screenOrientation="landscape"
android:usesCleartextTraffic="true">

<activity
  android:name=".MainActivity"
  android:label="@string/app_name"
  android:launchMode="singleInstance">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>

</activity>

Многие учебные пособия показывают, что необходимо добавить две последние категории, чтобы классифицировать мое приложение как пользовательский модуль запуска.

Кроме того, в моем файле MainActivity.cs есть следующие строки:

[Activity(Label = "@string/app_name", Name = "com.MediaKind.Mediaroom.MainActivity", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity, TV2Client.IHost, ISurfaceHolderCallback2

Я создал подписанный APK с VS 2019 и отправил его на устройство со следующей строкой:

adb push <path to apk> system/priv-app/Mediaroom/

Я поместил его туда, чтобы оно могло быть системным приложением.

После этого я перешел в оболочку adb и отключил средство запуска по умолчанию, как это:

adb shell pm hide com.google.android.leanbacklauncher

После этого я перезагрузил устройство в надежде, что устройство запустится с моим приложением, но этого не произошло. Нет никаких ошибок в logcat.

Кроме того, я работаю на телевизоре Android, а не на смартфоне, и меня беспокоит то, что я нашел несколько источников, которые указывают на то, что это больше невозможно после выпуска Marshmallow.

Если вам нужно что-то еще, пожалуйста, скажите мне.

И спасибо, что прочитали это.

1 Ответ

0 голосов
/ 28 апреля 2020

После долгих исследований я обнаружил, что пусковая установка Google Leanback по умолчанию имеет более высокий приоритет, чем моя пользовательская пусковая установка.

Пусковая установка Googles имеет приоритет 2, что означает, что все, что ниже 2, не будет учитываться рассмотрение.

Чтобы решить эту проблему, вам нужно отредактировать фильтр намерений следующим образом:

<intent-filter android:priority="3">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

Просто добавьте android: priority = "3" к фильтру намерений, если вы хотите, чтобы ваш модуль запуска автоматически добавлялся по умолчанию, просто установите приоритет 3, и это будет сделано, но когда вы хотите каждый раз выбирать модуль запуска при запуске, установите приоритет 2, потому что 2 это приоритет по умолчанию для google leanback launcher.

Надеюсь, это поможет следующему нуждающемуся парню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...