我正在为一个setupbox开发自定义的android启动器,并尝试使用以下方法获取电视应用程序的横幅广告(如下图所示)
packageInfo.applicationInfo.loadBanner(context.getPackageManager());
要么
context.getPackageManager().getApplicationBanner(packageName)
它适用于大多数应用程序,但是其中一些返回结果为null,例如Google Play Games,尽管我可以获得图标(即旁边没有文本的徽标)。
我使用的是正确的api吗?反正有通过编程获得它的方法吗?
答案 0 :(得分:1)
我也有这个问题。应用开发者之所以没有将横幅广告附加到程序包上,是因为他们将横幅广告附加到了活动上。
示例:
glob('folder/*.js', function (err, files) {
if (err) {
console.log(err);
}
var allfiles = files;
// Uploads VM local dir files to the bucket
storage
.bucket(bucketName)
.upload(allfiles)
.then(() => {
console.log(`${allfiles} uploaded to ${bucketName}.`);
})
.catch(err => {
console.error('ERROR:', err);
});'
});
每个软件包都可以进行很少的启动活动。因此,您需要先尝试为活动加载横幅,然后<?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
答案 1 :(得分:0)
摘自getApplicationBanner方法的文档:
在API级别20中添加
公共抽象Drawable
getApplicationBanner
(字符串packageName)检索与应用程序关联的标语。给定名称 应用程序的程序包,检索有关它的信息,然后 呼叫
getApplicationIcon()
返回其横幅广告。如果申请 找不到,抛出NameNotFoundException
。
您的函数还应该在调用getApplicationIcon
方法之后调用getApplicationBanner
以返回其标语。