java - TouchWiz 启动器检测

标签 java android live-wallpaper android-launcher android-package-managers

我目前正在 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/

相关文章:

java - 当我将 int 数组更改为 char 数组时,为什么我的 .class 文件更大?

java - JmDNS - 在多台机器上注册相同的服务

android - minSdkVersion小于11时如何添加Holo Style Horizo​​ntal ProgressBar?

Android动态壁纸示例强制关闭,无法实例化服务

安卓壁纸动画

java - Android 动态壁纸服务 onStop 未被调用

java - 如何设置 log4j2 asyncQueueFullPolicy

java - 使用 OpenCV 中的 Blob 检测进行皮肤毛孔分析

android - 根据 Intent Extra 的值禁用 Android 向上导航

java - Android 中带有详细信息 View 的 ListView