我按照本教程更新了一些语法。当我在虚拟设备(Pixel 2 Android 11)上运行时,应用程序已安装。点击按钮让我成功祝酒“成功添加贴纸”,贴纸被添加到我的 Gboard。
当我尝试在物理设备(也是 Pixel 2 Android 11)上安装应用程序时,应用程序已安装,我得到了同样成功的 toast,但在 Gboard 中找不到贴纸。这似乎是该教程帖子评论中的常见问题,但作者没有给出答案。
为什么贴纸没有出现在物理设备上的 Gboard 中的核心问题可能是什么?
编辑:我应该补充一点,该应用程序是通过内部测试安装在物理设备上的,而不是在调试环境中。本周我无法使用实体 Android 设备。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lyra.sooperturkeystickerpack">
<!-- Grant the AppIndexingUpdateService permission and enable it to run after being triggered -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="com.lyra.sooperturkeystickerpack.HomeActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="mystickers"/>
<data android:host="sooperturkeystickerpack"/>
</intent-filter>
</activity>
<service
android:name="com.lyra.sooperturkeystickerpack.AppIndexingUpdateService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"/>
</application>
</manifest>
应用索引更新服务
public class AppIndexingUpdateService extends JobIntentService {
// Job-ID must be unique across your whole app.
private static final int UNIQUE_JOB_ID = 42;
public static void enqueueWork(Context context) {
enqueueWork(context, AppIndexingUpdateService.class, UNIQUE_JOB_ID, new Intent());
}
@Override
protected void onHandleWork(@NonNull Intent intent) {
AppIndexingUtil.setStickers(getApplicationContext(), FirebaseAppIndex.getInstance());
}
}
AppIndexingUtil
public class AppIndexingUpdateService extends JobIntentService {
// Job-ID must be unique across your whole app.
private static final int UNIQUE_JOB_ID = 42;
public static void enqueueWork(Context context) {
enqueueWork(context, AppIndexingUpdateService.class, UNIQUE_JOB_ID, new Intent());
}
@Override
protected void onHandleWork(@NonNull Intent intent) {
AppIndexingUtil.setStickers(getApplicationContext(), FirebaseAppIndex.getInstance());
}
}
家活动
public class HomeActivity extends Activity {
Button mBtnAddSticker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mBtnAddSticker = findViewById(R.id.btn_add_sticker);
mBtnAddSticker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AppIndexingUpdateService.enqueueWork(HomeActivity.this);
}
});
}
}
贴纸
public class Sticker {
private String mURL;
public Sticker(String url) {
this.mURL = url;
}
public String getURL() {
return mURL;
}
public void setURL(String mURL) {
this.mURL = mURL;
}
}
贴纸数据工厂
public class StickersDataFactory {
public static List<Sticker> getAllStickerReference() {
String[] stickerURLRef = {
"https://firebasestorage.googleapis.com/v0/b/sooperturkey-sticker-pac-b4f0f.appspot.com/o/ssp_10.png?alt=media&token=87a1a3b9-35df-419b-9a4a-c32c9ddd9c0b",
"https://firebasestorage.googleapis.com/v0/b/sooperturkey-sticker-pac-b4f0f.appspot.com/o/ssp_10.png?alt=media&token=87a1a3b9-35df-419b-9a4a-c32c9ddd9c0b",
"https://firebasestorage.googleapis.com/v0/b/sooperturkey-sticker-pac-b4f0f.appspot.com/o/ssp_1.png?alt=media&token=b4998d0c-5383-4c70-bcfd-05ca4a3cc0a7",
"https://firebasestorage.googleapis.com/v0/b/sooperturkey-sticker-pac-b4f0f.appspot.com/o/ssp_2.png?alt=media&token=cc6a371e-7bae-412d-9959-23f82ae507e2",
"https://firebasestorage.googleapis.com/v0/b/sooperturkey-sticker-pac-b4f0f.appspot.com/o/ssp_3.png?alt=media&token=05cb74b2-47d8-4467-b20b-d0b6eb459f29",
"https://firebasestorage.googleapis.com/v0/b/sooperturkey-sticker-pac-b4f0f.appspot.com/o/ssp_4.png?alt=media&token=e2c3141d-68b2-4311-9174-0bcf49494467"
};
List<Sticker> stickerList = new ArrayList<>();
for (int i = 0; i < stickerURLRef.length; i++) {
stickerList.add(new Sticker(stickerURLRef[i]));
}
return stickerList;
}
}