4

질문 : 프로그래밍 방식으로 앱에서 제공하는 일부 홈 화면 위젯을 사용 설정하는 방법이 있습니까? 예를 들어, "프리미엄"위젯을 가지고 지불 한 후에 만 ​​액세스 권한을 부여합니까?Android : 프로그래밍 방식으로 앱 위젯 사용/사용 안함

<receiver android:name="ExampleAppWidgetProvider" > 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
      android:resource="@xml/example_appwidget_info" /> 
</receiver> 

수 있지만, 또한 이론 방송 수신기에 : 안드로이드로


하나는 응용 프로그램과 함께 오는 위젯이 있다는 것을 시스템에게 매니페스트에 방송 수신기를 추가해야합니다 말 docs 프로그래밍 방식으로 추가 될 수 있으므로 나중에 런타임에 위젯을 등록 할 수 있습니까?

답변

4

그런 다음 사용자가하는 일 (예를 들어, 지불) 할 때 런타임에이를 수 있도록 PackageManagersetComponentEnabledSetting()를 사용하여 매니페스트에서 응용 프로그램 위젯의 <receiver> 요소에 android:enabled="false"을 가질 수 있습니다.

그러나 홈 화면에서 잠재적 인 새로운 앱 위젯 공급자가 있다는 것을 깨닫기 전에 다시 부팅해야 할 수 있습니다.

+0

고마워요! 이에 대한 간단한 질문 : 다른 응용 프로그램이이 기능을 내 수신기 구성 요소를 지정하거나 심지어 adb 명령 줄에서 활성화 할 수 있음을 의미합니까? – frangulyan

+0

@frangulyan : "이것은 다른 앱이 내 수신기 구성 요소를 지정하는이 함수를 호출 할 수 있음을 의미합니까?"- 일반 Android SDK 앱에서는이를 수행 할 수 없습니다. 시스템 앱, 루팅 된 기기의 앱 등 "심지어 adb 명령 줄에서 활성화 할 수 있습니까?" -- 나도 그렇게 생각해. IMHO, 그건 당신의 관심사 목록에서 상당히 멀리 떨어져 있어야합니다. – CommonsWare

+3

파티에 늦을 수는 있습니다.하지만 나중에 참조 용으로'setComponentEnabledSetting()'은 모든 Android 버전의 AppWidgets에서 안정적으로 작동하지 않습니다. 버그 보고서는 https://issuetracker.google.com/issues/36914010에 있습니다. – String

관련 문제