2011-08-15 2 views
24

"홈 화면에 추가> 위젯"에서 위젯을 표시하는 것이 가능합니다. 두 개의 APK를 업로드하고 올바른 SDK 버전 번호를 지정하지 않고 특정 Android 버전에 대해서만 대화 할 수 있습니까?특정 안드로이드 버전에 대해서만 위젯을 표시 할 수 있습니까?

+2

버전에 의존 할뿐만 아니라 더 많은 것들이 흥미로울 것입니다. – berlindev

+0

물론 그것은 :) API 제한 때문에 2.1 문제가 있기 때문에 나는 단지 안드로이드 버전을 썼습니다. – Cloudgiant

답변

30

내가 어떤 코드 예를 들어없이 할 수있는 방법이 있습니다 \ 당신의 입술에

이 디렉토리는 bools.xml 파일 생성 값 :

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

가 생성 값을-V11 dir (honeycomb 이상의 값인 경우) 파일을 복사하고 true로 설정하십시오.

그러면 위젯 수신기의 매니페스트에서 android : enabled = "@ bool/honeycombOrAbove"를 사용하십시오. 또한 위젯의 구성 활동에도이 도구를 사용했습니다.

이것은 설치시 위젯이 사용 불가능 함을 의미합니다.

+1

응용 프로그램이 설치 될 때 작동하고 이는 프로비저닝 문제가 더 많으므로 눈부신 솔루션입니다. 고마워요. 오늘 아침 솔루션으로 사냥을 해줬습니다. –

+1

완벽한 솔루션입니다. 이것은 정말로 받아 들여진 대답 이었음에 틀림 없습니다! –

+1

매우 똑똑한 해결책! 확실히 최고의 대답! – pdegand59

9

당신은 componentEnableSetting으로 할 수 있습니다. 나열하고 싶지 않은 위젯을 비활성화하십시오. 전화를 다시 시작하면 변경 사항이 적용됩니다.

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

그래,이 코드는 앱의 버전 번호를 찾고 SDK가 아니기 때문에 약간 변경해야했지만이 솔루션이 작동합니다. 고마워요! – Cloudgiant

+0

무엇이 바뀌 었습니까? 나는 편집 할 수 있고 문제의 해결책으로 대답을 승인 할 수 있습니다. – berlindev

+0

"int versioncode = Integer.valueOf (android.os.Build.VERSION.SDK);" 2.1을 사용할 수 없게 설정하고 2.2 이상을 설정하면 – Cloudgiant

관련 문제