2013-07-15 6 views
5

에는 RemoteViewsService.RemoteViewsFactory로 채우려는 ListView가있는 AppWidget이 있습니다.RemoteViewsFactory grantUriPermission 데이터 가져 오기

나는 다음과 같은 오류를 가지고

E/AndroidRuntime (1203) :이 java.lang.SecurityException : 권한 거부 ​​: 읽기 com.crbin1.myapp.data.ProviderLTD URI 내용 : // COM. PID = 413에서 crbin1.myapp.data.ProviderLTD이/TB_WIDGET3P, UID = 10013은 공급자가 수출, 또는 필요 grantUriPermission() 나는 매니페스트에 ProviderLTD (내 콘텐츠 공급자)를 내보내는 경우

가 작동하지만 그것을 수출하는 것을 피하고 싶습니다.

다른 해결책은 grantUriPermission()입니다. grantUriPermissions를 manifest에서 true로 설정했지만 이제는 내 코드에서 권한을 부여해야하는 부분을 이해할 수 없습니다.

public class Widget3pService extends RemoteViewsService { 
     @Override 
     public RemoteViewsFactory onGetViewFactory(Intent intent) { 
      return new StackRemoteViewsFactory(this.getApplicationContext(), intent); 
     } 
    } 


    class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory { 
     private List<ObjW3Task> mWidgetItems = new ArrayList<ObjW3Task>(); 
     private Context mContext; 
     private int mAppWidgetId; 

     public StackRemoteViewsFactory(Context context, Intent intent) { 
      mContext = context; 
      mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
     } 

     public RemoteViews getViewAt(int position) { 
      // use mWidgetItems to populate ListView 
      // fillInIntent for listeners 
      return myRemoteViews; 
     } 

     public void onDataSetChanged() { 
      mWidgetItems = new ArrayList<ObjW3Task>(); 
      // create mWidgetItems by accessing my ContentProvider class 
     } 
} 

답변