2009-12-21 6 views
2

사용자가 탭을 클릭 할 때 표시되는 데이터를 변경하는 위젯에 대해 작업하고 있습니다. 이것은 일반적으로 다루기 쉽지만 내 앱 위젯 공급자는 다른 데이터 집합을 가진 여러 위젯 인스턴스를 처리하고 있습니다. 즉, 사용자가 위젯을 탭하면 changeData() 메소드를 호출하는 PendingIntent가 시작됩니다. 시작된 의도는 위젯 ID를 저장하는 곳입니다. changeData()는 사용할 데이터 세트를 알고 있습니다. 처음 엔 intent 's extras에 위젯 ID를 저장하고 있었지만, Android widget이 widget intent extras를 처리하는 방법에 버그가 있다는 것을 알았습니다. 이제 setData() 메서드를 사용하여 URL을 전달하여 위젯을 저장하려고합니다. WidgetId IE 콘텐츠 : 24 개 등). 나는이 테스트를하려고하면 App 위젯에 데이터를 보내려고 시도합니다.

Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA"); 
changeData.setData(Uri.parse("content:" + currentWidgetId)); 
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0); 

는하지만, 위젯을 탭하면 일반적으로 호출되는 onRecieve() 메소드가 더 이상

라고 : 나는 PendingIntent에 대한 데이터를 설정하고 방법

이입니다. 이 작업을 위해 Android Manifest 파일에서 설정해야 할 것이 있습니까, 아니면 내가 완전히 잘못하고있는 것이 있습니까? 이 글을 읽을 시간을내어

덕분에, 토니

답변

1

당신은 당신의 인 텐트 필터에

<data android:scheme="content" /> 

또는

IntentFilter filter = new IntentFilter("com.tonycosentini.mintdroid.CHANGE_DATA"); 
filter.addDataScheme("content"); 

일치해야합니다.

xml 또는 java에서 필터를 선언하면 다릅니다.

http://developer.android.com/guide/topics/intents/intents-filters.html

(및 유형은 URI로부터 추론 될 수 있음) URI하지만 데이터 유형을 포함하는 텐트 오브젝트는 URI가 필터의 URI와 일치하는 필터가 유사하지 않는 경우에만 테스트를 통과 유형을 지정하십시오. 이는 실제 데이터를 참조하지 않는 mailto : 및 tel :와 같은 URI의 경우에만 해당됩니다.

+0

설명해 주셔서 감사합니다. 지금은 유일한 문제는 내 매니페스트에 데이터 태그를 추가 할 때 위젯을 메뉴에서 사라지게하여 위젯을 선택하는 것입니다. – tonyc

+1

이 문제가 해결되었습니다. 고마워요! 헤드 업 : 위젯이 메뉴에 나타나지 않은 것과 같은 문제가 발생하면 데이터에 대해 별도의 인 텐트 필터를 만들어야합니다. – tonyc

+0

아 좋아요. 문제를 업데이트 해 주셔서 감사합니다. – n3utrino

관련 문제