возможно ли показ виджета только для определенной версии Android? - PullRequest
24 голосов
/ 15 августа 2011

возможно ли отображать виджет в диалоге «Добавить на главный экран> Виджеты» только для определенной версии Android без загрузки двух APK и назначения соответствующих номеров версий SDK?

Ответы [ 2 ]

32 голосов
/ 31 августа 2011

У меня есть способ сделать это без какого-либо кода, например ::100100

В директории res \ values ​​создайте файл bools.xml:

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="honeycombOrAbove">false</bool> </resources>

Создайте dir values-v11 (для сотовых или выше значений), скопируйте в него файл и установите значение true.

Тогда в манифесте для получателя виджета используйте: android: enabled = "@ bool / honeycombOrAbove". Я также использовал его в деятельности по настройке виджета.

Это означает, что виджет отключен во время установки.

9 голосов
/ 15 августа 2011

Вы можете сделать это с помощью компонентаEnableSetting. Просто отключите виджет, который вы не хотите перечислять. Изменение вступит в силу после перезагрузки телефона.

Context context = getApplicationContext();
String str1 = "org.classname.to.widget.provider";
ComponentName componentName = new ComponentName(context, str1);
PackageManager packageManager = getPackageManager();

int versioncode = Integer.valueOf(android.os.Build.VERSION.SDK);    

//enable widget
packageManager.setComponentEnabledSetting(componentName, 1, 1);

//disable widget
packageManager.setComponentEnabledSetting(componentName, 2, 1);
...