У меня тоже есть эта проблема.Причина, по которой разработчики приложений не прикрепляют баннер к пакету, заключается в том, что они прикрепляют баннер к действию.
Пример:
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ru.tv1.android.tv">
......
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name="ru.kino1tv.android.tv.App" android:supportsRtl="true" android:theme="@style/AppTheme.Leanback">
<activity android:banner="@drawable/app_icon_banner" android:icon="@drawable/app_icon_banner" android:label="@string/app_name" android:logo="@drawable/app_icon_banner" android:name="ru.kino1tv.android.tv.ui.activity.MainActivity" android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
</intent-filter>
</activity>
......
</application>
</manifest>
Каждый пакет может иметь несколько операций запуска.Итак, сначала нужно загрузить баннер для активности, а затем, если он null
, попытаться загрузить баннер для пакета.
Intent AppsIntent = new Intent(Intent.ACTION_MAIN, null);
AppsIntent.addCategory(Intent.CATEGORY_LEANBACK_LAUNCHER);
List<ResolveInfo> apps = mPackageManager.queryIntentActivities(AppsIntent, 0);
for (ResolveInfo app : apps) {
Drawable banner = app.activityInfo.loadBanner(mPackageManager);
if (banner == null) {
banner = app.activityInfo.applicationInfo.loadBanner(mPackageManager);
}
}