我可以以某种方式检测我的应用是否在HTC Sense上运行吗?
更一般地说,问题是,我有一个带有自定义drawable的Button。它与Gmail应用程序右上角的帐户切换器非常相似。按下或聚焦时,按钮具有橙色突出显示。但是在HTC Sense上看起来并不好看 - 因为标准的高亮颜色是绿色的。
答案 0 :(得分:3)
让我们看看android.os.Build字符串我不知道HTC人员使用组合来表示HTC感应设备..
答案 1 :(得分:3)
这是link建议在设备上检测HTC Sense的方法,大约是讨论的1/3。我在Desire和Desire Z上测试过。
代码如下(来自用户:David):
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;
}
答案 2 :(得分:1)
我认为Android提供了一种更好的解决方法,而不是检查Sense,它适用于每个设备制造商。 HTC并不是唯一改变选择器颜色的人。我认为索尼爱立信有一个透明的白色/蓝色,摩托罗拉在他们的MotoBlur UI中将其改为红色,而Garmin-Asus将其改为蓝色,仅举几例。
您应该做的是覆盖图片按钮上的android:background
属性并使用您自己的drawable而不是依赖于框架的背景
绘制。如果您还不熟悉它们,那么在创建自定义背景时,您可能还需要查看Selectors,这样您仍然可以获得按下/选中/未选择的颜色提示。
如果您要使用多个按钮,则可能需要使用样式和主题来帮助解决此问题。您要从Android文档中引用的两个主要位置是“Applying Styles and Themes”和“Style Resources”
希望有所帮助!
答案 3 :(得分:0)
您可以尝试寻找依赖于Rosie框架并且无法卸载的HTC / Sense应用程序 - 或者Rosie框架本身存在就足够了。 This thread显示了如何获取已安装应用程序的列表。
答案 4 :(得分:0)
我认为应遵循以下方法 - 我们定义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>
但在这里我们应该参考一些标准资源,而不是我们应用程序的图像。只需要找出他们有哪些ID。
答案 5 :(得分:0)
这有点晚了,但我认为这个解决方案可能适用于某些人案例。
我尝试使用Build.MANUFACTURER来检查它是否是HTC设备。此解决方案在某些设备上不起作用,我们可以确保设备正在运行Sense
如果您注意到,您可能会看到Play商店需要检查手机上可用的功能以显示正确的应用,而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感知版
希望有所帮助