czy możliwe jest wyświetlanie widżetu w "Dodaj do ekranu głównego> Widżety" Tylko okno dialogowe dla określonej wersji Androida bez przesyłania dwóch plików APK i przypisywania odpowiednich numerów wersji SDK?czy możliwe jest wyświetlanie widżetu tylko dla określonej wersji Androida?
Odpowiedz
Mam sposób to zrobić bez kodu np
W twoich res \ ceni reż utworzyć plik bools.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="honeycombOrAbove">false</bool> </resources>
Stwórz listę wartości-v11 dir (dla plastra miodu lub wyższych wartości), skopiuj do niego plik i ustaw wartość na true.
Następnie w manifeście dla odbiornika widgetu użyj: android: enabled = "@ bool/honeycombOrAbove". Użyłem go również w działaniu konfiguracyjnym dla widżetu.
Oznacza to, że widget jest wyłączony podczas instalacji.
Doskonałe rozwiązanie, ponieważ działa po zainstalowaniu aplikacji i jest to raczej problem z rezerwowaniem. Dzięki za to - zaoszczędziłeś mi dziś rano polowania na rozwiązanie. –
Idealne rozwiązanie. To naprawdę powinna być zaakceptowana odpowiedź! –
Bardzo sprytne rozwiązanie! Zdecydowanie najlepsza odpowiedź! – pdegand59
Można to zrobić za pomocą komponentuEnableSetting. Po prostu wyłącz widżet, którego nie chcesz wyświetlać. Zmiana zostanie aktywowana po ponownym uruchomieniu telefonu.
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);
Tak, to rozwiązanie działa, chociaż musiałem to trochę zmienić, ponieważ ten kod szuka numeru wersji aplikacji, a nie SDK. Wielkie dzięki! – Cloudgiant
co zmieniłeś? mogę edytować, a następnie możesz zatwierdzić odpowiedź jako rozwiązanie twojego problemu – berlindev
właśnie w tym wierszu "int versioncode = Integer.valueOf (android.os.Build.VERSION.SDK);" i dodano, jeśli warunki dla 2.1, aby wyłączyć i 2.2 lub wyżej, aby umożliwić – Cloudgiant
byłoby interesujące, nie tylko zależne od wersji, ale i innych rzeczy. – berlindev
oczywiście, to by było :) Właśnie napisałem wersję Androida, ponieważ mam problemy z 2.1 z powodu ograniczeń API. – Cloudgiant