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