Android: Cómo cargar una foto en flickr usando flickrj-android-2.0.0 android library
I un uso de flickrj-android-2.0.0 y seguir el flujo de OAuth. Estoy recibiendo el token de acceso y el secreto también pero cuando intento subir la foto en flickr estoy consiguiendo el este error:
Com.googlecode.flickrjandroid.FlickrException: 99: Permisos insuficientes. El método requiere privilegios de escritura; Leer concedido .
- Error de conexión de anuncios: EOF (nuevo en android)
- ¿Cómo puedo hacer una barra de progreso personalizada en la barra de acción?
- Crear componente personalizado basado en LinearLayout, declarando el diseño en XML
- Saber si un archivo es una imagen en Java / Android
- ¿Cómo eliminar todos los archivos temporales creados por createTempFile al salir de una aplicación en android?
Incluso he cambiado el permiso para escribir cuando estoy creando mi api-clave y secreto, pero sigue recibiendo el mismo error.
Para cargar la foto estoy usando el siguiente código por favor ayúdame a resolver esto Estoy realmente atrapado en esta parte.
public void uploadPhoto(OAuth... params) throws ParserConfigurationException { OAuth oauth = params[0]; OAuthToken token = oauth.getToken(); RequestContext requestContext = RequestContext.getRequestContext(); OAuth auth = new OAuth(); auth.setToken(new OAuthToken(token.getOauthToken(), token .getOauthTokenSecret())); requestContext.setOAuth(auth); Uploader up = new Uploader(FlickrHelper.API_KEY, FlickrHelper.API_SEC); UploadMetaData uploadMetaData = new UploadMetaData(); uploadMetaData.setTitle("hello world"); try { Drawable d = getResources().getDrawable(R.drawable.icon); // the drawable (Captain Obvious, to the rescue!!!) Bitmap bitmap = ((BitmapDrawable) d).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitmapdata = stream.toByteArray(); System.out.println("Bitmap value= " + bitmapdata); userIcon.setImageBitmap(bitmap); up.upload("Hello From Emulator", bitmapdata, uploadMetaData); } catch (FlickrException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Gracias…
- parámetros de glGenTexture?
- Apache Cordova CordovaActividad no se puede resolver
- Android - ¿Se puede utilizar el Cursor SQLite después de cerrar la base de datos?
- Luchando con JDBC en Android Studio
- Android: acelerar la transición de elementos compartidos entre actividades
- Actividad vacía de Android y actividad en blanco
- Error al crear objeto Uri
- Android agrega mi aplicación al botón "Compartir" en la galería
He resuelto cambiando la clase de OAuthTask
… El problema era el permiso solamente … Puesto Permission.WRITE
vez de Permission.READ
public class OAuthTask extends AsyncTask<Void, Integer, String> { // private static final Logger logger = LoggerFactory // .getLogger(OAuthTask.class); private static final Uri OAUTH_CALLBACK_URI = Uri .parse(FlickrjAndroidSampleActivity.CALLBACK_SCHEME + "://oauth"); //$NON-NLS-1$ /** * The context. */ private Context mContext; /** * The progress dialog before going to the browser. */ private ProgressDialog mProgressDialog; /** * Constructor. * * @param context */ public OAuthTask(Context context) { super(); this.mContext = context; } @Override protected void onPreExecute() { super.onPreExecute(); mProgressDialog = ProgressDialog.show(mContext, "", "Generating the authorization request..."); //$NON-NLS-1$ //$NON-NLS-2$ mProgressDialog.setCanceledOnTouchOutside(true); mProgressDialog.setCancelable(true); mProgressDialog.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dlg) { OAuthTask.this.cancel(true); } }); } /* * (non-Javadoc) * * @see android.os.AsyncTask#doInBackground(Params[]) */ @Override protected String doInBackground(Void... params) { try { Flickr f = FlickrHelper.getInstance().getFlickr(); OAuthToken oauthToken = f.getOAuthInterface().getRequestToken( OAUTH_CALLBACK_URI.toString()); saveTokenSecrent(oauthToken.getOauthTokenSecret()); URL oauthUrl = f.getOAuthInterface().buildAuthenticationUrl( Permission.WRITE, oauthToken); return oauthUrl.toString(); } catch (Exception e) { // logger.error("Error to oauth", e); //$NON-NLS-1$ return "error:" + e.getMessage(); //$NON-NLS-1$ } } /** * Saves the oauth token secrent. * * @param tokenSecret */ private void saveTokenSecrent(String tokenSecret) { // logger.debug("request token: " + tokenSecret); //$NON-NLS-1$ FlickrjAndroidSampleActivity act = (FlickrjAndroidSampleActivity) mContext; act.saveOAuthToken(null, null, null, tokenSecret); // logger.debug("oauth token secret saved: {}", tokenSecret); //$NON-NLS-1$ } @Override protected void onPostExecute(String result) { if (mProgressDialog != null) { mProgressDialog.dismiss(); } if (result != null && !result.startsWith("error")) { //$NON-NLS-1$ mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri .parse(result))); } else { Toast.makeText(mContext, result, Toast.LENGTH_LONG).show(); } } }
Ver Demostración Completa