2013-07-05 1 views
1

Widget을 가지려면 위젯의 속성을 설명하는 XML 파일 (AppWidgetProviderInfo)을 유지해야합니다. 이 같은 크기 또는 고정 업데이트 빈도 :Android 위젯의 고정 된 업데이트 빈도

<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="160dp" 
    android:minHeight="72dp" 
    android:initialLayout="@layout/widget_layout" 
    android:updatePeriodMillis="1800000" 
    android:configure="android.project.WidgetConfigure" > 

</appwidget-provider> 

과의 AndroidManifest.xml의 App 위젯 설정을 유지합니다.

<meta-data 
     android:name="android.appwidget.provider" 
     android:resource="@xml/widget_info" /> 
</receiver> 

나는 우리가 updatePeriodMillis을 편집 할 수 있다는 것을 알고. 프로그래밍 방식으로 AlarmManager를 사용해야합니다. (Android Widget set android:updatePeriodMillis programmatically)

그러나 xml 파일에서이 값을 프로그래밍 방식으로 읽을 수는 있습니다. 어떤 방법이 있습니까?

은 부칙 : 내가 활동이 코드를 사용하는 경우

try { 
     AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); 
     AppWidgetProviderInfo info = appWidgetManager.getAppWidgetInfo(R.xml.widget_info); 
     System.out.println("Time: " + info.updatePeriodMillis); 
    } catch(Exception err) { 
     err.printStackTrace(); 
    } 

, 그것은 캐치에 NullPointerException이 반환합니다.

답변

1

updatePeriodMillis은 해당 기간이 지나면 적절한 방송을 보내기 위해 시스템에서 사용하는 값입니다. 정확히 무엇을 읽고 정확히 동일한 시간에 AlarmManager 의도를 실행 하시겠습니까?

편집 후 : 잘못된 "id"를 전달 중입니다. XML 메타 데이터 ID가 아닌 실제 위젯 ID를 전달해야합니다. 나는 내 마지막 코멘트에 쓴 ,이 시도 : AppWidgetManager.getInstance()는 다음 논의로 계속 다음, 위젯 (들) ID를 검색 할 수 AppWidgetManager.getAppWidgetIds()를 사용 (AppWidgetManager.getAppWidgetInfo() ...)

+0

내가 그렇게하고 싶지 않아. 이 문장은 링크가있는 정보 일 뿐이었지만 읽는 법을 알고 싶었습니다. – Ali

+0

아, 알겠습니다. 더 많은 방법이 있지만 파일을 읽고 구문 분석하는 것을 고려 했습니까? 여기 좀보세요 : http://stackoverflow.com/questions/4329308/open-xml-file-from-res-xml-in-android – avimak

+0

그것은 XML 파일을 구문 분석해야하며 더 간단한 코드가 없다는 것을 의미합니다. . 그게 니가 의미 한거야? – Ali

관련 문제