2011-08-15 15 views
24

"Ana ekrana ekle> Widget'lar" penceresindeki widget'ı göstermek sadece iki APK'yu yüklemeden ve uygun SDK sürüm numaralarını atamadan belirli bir Android sürümü için iletişim kuruyor mu?Sadece belirli bir android sürümü için widget göstermek mümkün mü?

+2

Sadece versiyona değil, daha fazla şeye bağlı olmak ilginç olurdu. – berlindev

+0

Tabii ki :) Ben sadece Android sürümü yazdım çünkü API kısıtlamaları nedeniyle 2.1 ile ilgili sorunlar yaşıyorum. – Cloudgiant

cevap

30

Ben herhangi bir kod örneğin olmadan bunu yapmak için bir yol var: \ sizin res ise

dir Bir bools.xml dosyası oluşturmak değerleri:

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

bir oluştur değerler-v11 dir (petek veya üstü değerler için), dosyayı ona kopyalayın ve değeri true olarak ayarlayın. Daha sonra pencere öğesi alıcısı için bildiride: android: enabled = "@ bool/honeycombOrAbove". Ayrıca widget için yapılandırma etkinliğinde kullandım.

Bu, widget'in yükleme sırasında devre dışı bırakıldığı anlamına gelir.

+1

Uygulama yüklendikten sonra çalıştığı için mükemmel bir çözümdür ve bu bir sağlama sorunudur. Bunun için teşekkürler - bu sabah bir çözüm için bir sürü avı kurtardın. –

+1

Mükemmel çözüm. Bu gerçekten kabul edilen cevap olmalıydı! –

+1

Çok akıllıca bir çözüm! Kesinlikle en iyi cevap! – pdegand59

9

Bunu componentEnableSetting ile yapabilirsiniz. Listelemek istemediğiniz widget'ı devre dışı bırakın. Telefon yeniden başlatıldıktan sonra değişiklik aktif hale gelecektir.

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); 
+0

Bu çözüm, bu kod SDK'yı değil, uygulamanın sürüm numarasını aradığından biraz değiştirmem gerekti halde işe yarar. Çok teşekkürler! – Cloudgiant

+0

Ne değiştirdiniz? Ben düzenlemek ve daha sonra bu sorunun çözümü için çözüm olarak onaylayabilirsiniz – berlindev

+0

sadece bu satır "int versioncode = Integer.valueOf (android.os.Build.VERSION.SDK);" ve 2.1'i devre dışı bırakmak için koşullar ve 2.2 veya üzeri – Cloudgiant

İlgili konular