hanno un AppWidget con un controllo ListView che voglio riempire con un RemoteViewsService.RemoteViewsFactory.grantUriPermission RemoteViewsFactory per recuperare i dati
ho il seguente errore
E/AndroidRuntime (1203): java.lang.SecurityException: Permesso Denial: lettura com.crbin1.myapp.data.ProviderLTD uri contenuto: // com. crbin1.myapp.data.ProviderLTD/TB_WIDGET3P da pid = 413, uid = 10013 richiede essere esportato il provider, o grantUriPermission()
Se posso esportare ProviderLTD (il mio fornitore di contenuti) in palese funziona, ma io Preferisco evitare di esportarlo.
L'altra soluzione è grantUriPermission(). Ho impostato grantUriPermissions su true in manifest, ma ora non capisco dove nel mio codice devo concedere le autorizzazioni.
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
}
}