2013-07-15 20 views
5

mają AppWidget z Listview, który chcę wypełnić za pomocą RemoteViewsService.RemoteViewsFactory.Przydzielanie RemoteViewsFactoryUriPermission do pobierania danych

mam następujący błąd

E/Android Runtime (1203): java.lang.SecurityException: Permission Denial: czytanie com.crbin1.myapp.data.ProviderLTD uri zawartość: // pl. crbin1.myapp.data.ProviderLTD/TB_WIDGET3P z pid = 413, uid = 10013 wymaga usługodawca być wywożone lub grantUriPermission()

Gdybym eksportować ProviderLTD (mojego dostawcy treści) w oczywisty to działa, ale ja "chciałbym go wyeksportować.

Drugim rozwiązaniem jest grantUriPermission(). Ustawiam granicePrivacji na true w manifeście, ale teraz nie rozumiem, gdzie w moim kodzie muszę nadać uprawnienia.

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 
     } 
} 

Odpowiedz

Powiązane problemy