Как обнаружить HTC Sense?

Могу ли я каким-то образом определить, работает ли мое приложение на HTC Sense?

В более общем плане проблема заключается в том, что у меня есть кнопка с настраиваемым пользователем. Это очень похоже на переключатель учетных записей в правом верхнем углу приложения Gmail. При нажатии или фокусировке кнопка имеет оранжевую подсветку. Но это плохо выглядит на HTC Sense, потому что стандартный цвет подсветки зеленый.

Solutions Collecting From Web of "Как обнаружить HTC Sense?"

Давайте посмотрим на строку android.os.Build. Я не уверен, что люди HTC используют комбинацию для обозначения устройства HTC.

Вот ссылка, предлагающая способ обнаружения HTC Sense на устройстве, примерно на 1/3 пути обсуждения. Я тестировал «Желание и желание».

Код ниже (от пользователя: Дэвид):

private static final String SENSE_UI_LAUNCHER_NAME = "com.htc.launcher.Launcher"; private static Boolean senseUI; public static final boolean isSenseUI(Context context) { if (senseUI == null) { senseUI = false; PackageManager packageManager = context.getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); List<ResolveInfo> list = packageManager.queryIntentActivities( intent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo info : list) { if (info.activityInfo != null && SENSE_UI_LAUNCHER_NAME .equals(info.activityInfo.name)) { senseUI = true; break; } } } return senseUI; } 

Я думаю, что Android предоставил вам лучший способ решить эту проблему, чем сделать проверку на Sense, и она будет работать для каждого производителя устройства. HTC не единственный, кто изменил цвета на селекторах. Я думаю, что Sony Ericsson имеет прозрачный белый / синий, Motorola изменила его на красный в своем пользовательском интерфейсе MotoBlur, и Garmin-Asus изменил его на синий, чтобы назвать несколько.

То, что вы должны сделать, это переопределить атрибут android:background на вашей кнопке изображения и использовать собственный вариант, вместо того чтобы полагаться на исходный фон рамки. Если вы еще не знакомы с ними, вы, вероятно, также захотите взглянуть на Селекторы, когда вы создадите свой собственный фон, так что вы все равно получите нажатые / выбранные / не выбранные цветовые сигналы.

Если у вас есть несколько кнопок, на которые вы хотите сделать это, вы можете использовать стили и темы, чтобы помочь в этом. Двумя основными местами, которые вы хотите использовать в документации Android, являются « Применение стилей и тем » и « Ресурсы стилей »,

Надеюсь, это поможет!

Вы можете попробовать искать приложение HTC / Sense, которое полагается на структуру Rosie и не может быть удалено – или, может быть, сама инфраструктура Rosie будет достаточно. В этом потоке показано, как получить список установленных приложений.

Я думаю, что следует придерживаться следующего подхода: мы определяем android:background , что-то вроде

 <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/pressed_application_background" /> <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/focused_application_background" /> <item android:state_focused="true" android:state_window_focused="false" android:drawable="@android:color/transparent" /> </selector> 

Но здесь мы должны ссылаться на некоторые стандартные ресурсы, а не на изображения нашего приложения. Просто нужно выяснить, какие из них у них есть.

Это немного поздно, но я думаю, что это решение может работать на некоторых случаях.

Я попытался использовать Build.MANUFACTURER, чтобы проверить, является ли это устройством HTC. Это решение не работает на некоторых устройствах, и мы можем гарантировать, что эти устройства работают Sense в любом случае

Если вы заметили, вы можете увидеть, что Play Store необходимо проверить, какие функции доступны на телефоне для отображения правильных приложений, а HTC Sense – одна из особенностей!

Чтобы получить все доступные функции:

 public FeatureInfo[] getSystemAvailableFeatures(Context context) { FeatureInfo[] features = context.getPackageManager().getSystemAvailableFeatures(); for (FeatureInfo f : features) { Log.d("Features", "feature " + f.name); } return features; } 

Это вернет что-то вроде этого:

 com.example D/Features﹕ Feature android.hardware.wifi com.example D/Features﹕ Feature android.hardware.location.network com.example D/Features﹕ Feature com.sec.android.mdm com.example D/Features﹕ Feature android.hardware.location com.example D/Features﹕ Feature android.hardware.sensor.gyroscope com.example D/Features﹕ Feature android.hardware.screen.landscape com.example D/Features﹕ Feature com.htc.software.Sense5.0 

Обратите внимание на последнюю строку! Вы можете использовать его для проверки версии HTC

Надеюсь, поможет