我目前正在 Android 中制作动态壁纸。
事实证明,三星的 TouchWiz 启动器从未调用 onOffsetChanged
方法。这里唯一的方法是检测 TouchWiz 是否正在运行并相应地模拟滚动。
有没有办法检测我的动态壁纸是否在三星的 TouchWiz 启动器下运行?
最佳答案
您可以使用下面示例中提供的代码来检测是否安装了启动器;
第一个
boolean isLauncherInstalled () {
final String myLauncherPackageName = "LAUNCHER PACKAGE NAME"; // com.sec.android.app.launcher
final IntentFilter filterCategory = new IntentFilter(Intent.ACTION_MAIN);
filter.addCategory(Intent.CATEGORY_HOME);
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(filterCategory);
List<ComponentName> activities = new ArrayList<ComponentName>();
final PackageManager packageManager = (PackageManager) getPackageManager();
packageManager.getPreferredActivities(filters, activities, null);
for (ComponentName activity : activities) {
if (myLauncherPackageName.equals(activity.getPackageName())) {
return true; // Is a match so you have a Launcher installed.
}
}
return false; // No Launcher.
}
第二个
public boolean isLauncherInstalled() {
final String myLauncherPackageName = "LAUNCHER PACKAGE NAME"; // com.sec.android.app.launcher
IntentFilter filterCategory = new IntentFilter(Intent.ACTION_MAIN);
filterCategory.addCategory(Intent.CATEGORY_HOME);
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(filterCategory);
List<ComponentName> preferredActivities = new ArrayList<ComponentName>();
final PackageManager packageManager = (PackageManager) getPackageManager();
packageManager.getPreferredActivities(filters, preferredActivities, myLauncherPackageName);
if (preferredActivities != null && preferredActivities.size()> 0) {
return true; // Is a match so you have a Launcher installed.
}
return false; // No Launcher.
}
但是,最好的选择是始终模拟滚动,因为有更多启动器不会触发 OnOffsetsChanged
。但是,当您实际收到对 OnOffsetsChanged 的调用时,只需禁用模拟滚动即可。这样,如果可用,OnOffsetsChanged
就可以正常运行。
下面的文章将让您了解如何解决这个问题; Artikel Link
关于java - TouchWiz 启动器检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26931614/