5

사용자가 위젯 본문을 클릭 할 때 주 앱의 Activity를 호출해야하는 위젯이 있습니다. 내 설치는 단일 위젯 인스턴스에 대해 작동하지만 동일한 위젯의 두 번째 인스턴스에 대해 PendingIntent가 재사용되고 결과적으로 내가 추가로 보내는 중요 정보가 첫 번째 인스턴스에 대해 덮어 씁니다. 그래서 나는 위젯 ID를 Intent 데이터로 전달해야한다고 생각했지만 Intent#setData을 추가하자마자 2 개의 개별 인 텐트가 적절하게 해고되었다는 것을 로그에서 볼 수 있지만 활동은 기본적으로 그걸 가져 가지 못합니다. 활동이 나타나지 않고 아무 일도 일어나지 않습니다.Android : 인 텐트에 데이터를 추가하면 작업로드가 실패합니다.

<activity android:name=".SearchResultsView" 
     android:label="@string/search_results" 
     <intent-filter> 
      <action android:name="bostone.android.search.RESULTS" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

그리고 여기에 포장되어 있습니다 클릭

Intent di = new Intent("bostone.android.search.RESULTS"); 
di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
// if line below is commented out - the Activity will start 
di.setData(ContentUris.withAppendedId(Uri.EMPTY, widgetId)); 
di.putExtra("URL", url); 
views.setOnClickPendingIntent(R.id.widgetContent, 
    PendingIntent.getActivity(this, 0, di, 0)); 

주요 응용 프로그램 및 위젯을 처리하기위한 설정입니다 코드입니다 : 활동이 매니페스트의 설정이 어떻게 여기 (오류 또는 경고 에테르) 는 없다 자체 패키지로 각각 2 개의 분리 된 APK 및 매니페스트

답변

4

<intent-filter><data> 태그가 필요하다고 생각하면 등록한 인 텐트 필터와 일치하도록 해고하십시오.

https://developer.android.com/guide/topics/manifest/data-element.html

Uri.EMPTY 또한 문제가 될 수있다 사용.

<intent-filter> 
     <action android:name="bostone.android.search.RESULTS" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:scheme="droidln"/> 
    </intent-filter> 
+0

오 : 같을 것이다

di.setData(Uri.withAppendedPath(Uri.parse("droidln://widget/id/"), String.valueOf(appWidgetId))); 

과 의도 필터 : 당신 사항 setData() 호출과 같이 보입니다 그래서 나는, 자신의 열린 구조를 만들 것입니다! 물론 - 어리석은 나를! @mbaird에게 감사합니다 - 이제 완벽하게 작동합니다. – Bostone

관련 문제