Обнаружение программы запуска TouchWiz

В настоящее время я работаю над живыми обоями для Android. Оказалось, что программа запуска Samsung TouchWiz никогда не вызывает метод onOffsetChanged. Единственный способ здесь — определить, работает ли TouchWiz, и соответствующим образом имитировать прокрутку. Есть ли способ определить, работают ли мои живые обои под программой запуска Samsung TouchWiz?


person ezpresso    schedule 14.11.2014    source источник
comment
Соответствующий вопрос: stackoverflow.com/questions/8626421 / — Просто замените намерение браузера на намерение дома.   -  person Machinarius    schedule 14.11.2014


Ответы (2)


Вы можете определить, установлена ​​ли программа запуска, используя следующий код, представленный в приведенных ниже примерах;

Первый

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 может нормально функционировать, если он доступен.

Следующая статья даст вам представление о том, как к этому подойти; Ссылка на статью

person FriendlyAgent    schedule 14.11.2014
comment
Не сработает ли это, даже если TouchWiz не используется? Мол, скажем, я использую Nova, но TouchWiz все еще установлен. - person Josh; 14.11.2014

Не пытайтесь определить программу запуска, так как HTC делает это и на некоторых устройствах.

Лучшее решение состоит в том, чтобы предположить, что вы НЕ ПОЛУЧИТЕ события прокрутки и ВСЕГДА изначально выполняете симулированную прокрутку. Затем, если вы получите вызов onOffsetChanged (что произойдет с большинством программ запуска), отключите имитацию прокрутки и продолжайте как обычно.

person Josh    schedule 14.11.2014