2

たとえば、私のXperiaミニ電話では、

しかし、私はこの電話のために「ソニーエリクソンxperiaミニ」を手に入れたいです。

出来ますか?

4

2 に答える 2

3

その特定の電話(およびおそらく他の多くのSonyEricsson電話)では、言及したシステムプロパティを読み取るだけで実際のデバイス名を取得できます。ro.semc.product.model

クラスはパブリックAPIからandroid.os.SystemProperties隠されているため、リフレクションを使用する必要があります(またはexecgetprop ro.semc.product.modelコマンドを使用してその出力を取得します)。

public String getSonyEricssonDeviceName() {
  String model = getSystemProperty("ro.semc.product.model");
  return (model == null) ? "" : model;
}


private String getSystemProperty(String propName) {
  Class<?> clsSystemProperties = tryClassForName("android.os.SystemProperties");
  Method mtdGet = tryGetMethod(clsSystemProperties, "get", String.class);
  return tryInvoke(mtdGet, null, propName);
}

private Class<?> tryClassForName(String className) {
  try {
    return Class.forName(className);
  } catch (ClassNotFoundException e) {
    return null;
  }
}

private Method tryGetMethod(Class<?> cls, String name, Class<?>... parameterTypes) {
  try {
    return cls.getDeclaredMethod(name, parameterTypes);
  } catch (Exception e) {
    return null;
  }
}

@SuppressWarnings("unchecked")
private <T> T tryInvoke(Method m, Object object, Object... args) {
  try {
    return (T) m.invoke(object, args);
  } catch (InvocationTargetException e) {
    throw new RuntimeException(e);
  } catch (Exception e) {
    return null;
  }
}
于 2012-10-03T12:50:07.243 に答える
0

ST15IXPeria miniの型式コードです。したがって、 を使用するかBuild.DEVICE、さまざまなコードとその名前の対応ベースを構築する必要があります。

于 2012-08-23T12:41:50.363 に答える