PDA

Ver la Versión Completa : Compartir imagenes fuera de la aplicación


sonydei
27/08/16, 10:53:08
Vereis estoy haciendo una aplicación para ver imágenes que están alojadas en un servidor externo y quisiera que el usuario pudiera compartir dichas imágenes. Pero me da error estas líneas me podeis ayudar?


package com.imagenes;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.graphics.Bitmap;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;

public class VerImagenes extends Activity {

HttpResponse response;
String resultado;
private AdView adView;
String[] Imagenes;
Context context;
int loader = R.drawable.loader;
int CantImg = 0;



override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#DB25E8")));
setContentView(R.layout.ver_imagenes);

private Intent shareIt() {
ImageView.setDrawingCacheEnabled(true);
Bitmap icon = ImageView.getDrawingCache();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
try {
file.createNewFile();
FileOutputStream fo = new FileOutputStream(file);
fo.write(bytes.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("image/png");
shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WH EN_TASK_RESET);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory( ) + File.separator + "temporary_file.jpg");

shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(shareIntent, "Share via"));
return shareIntent;
}


context = getApplicationContext();

// Cargamos la publicidad de AdMob
AdView adView = (AdView)this.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);

//Cargamos listado de url
new MyAsyncTask().execute("");
}

//Boton ir atras
public void IrAtras(View view){
CantImg--;
if(CantImg<0) CantImg=0; else LoadImg();
}

//Boton ir adelante
public void IrAdelante(View view){
CantImg++;
if(CantImg>(Imagenes.length-1)) CantImg--; else LoadImg();
}

//Mostrar imagen en pantalla
public void LoadImg(){
Log.e("CantImg:",""+CantImg);
ImageView image = (ImageView) findViewById(R.id.imageView1);
String image_url = Imagenes[CantImg];

ImageLoader imgLoader = new ImageLoader(context);
imgLoader.DisplayImage(image_url, loader, image);

TextView txt = (TextView) findViewById(R.id.textView1);
txt.setText((CantImg+1) + " de " + Imagenes.length);

}

//Cargar listado de imagenes
private class MyAsyncTask extends AsyncTask<String, Integer, Double>{
override
protected Double doInBackground(String... params) {
// TODO Auto-generated method stub
postData();
return null;
}

protected void onPostExecute(Double result){
//Toast.makeText(getApplicationContext(), "Cargando...", Toast.LENGTH_LONG).show();
Log.e("Termino:","1");
}

protected void onProgressUpdate(Integer... progress){
//Progreso
}

public void postData() {
// Creamos un nuevo cliente htttp y leemos nuestra url
HttpClient httpclient = new DefaultHttpClient();
HttpGet httppost = new HttpGet("http://www.smartcooper.com/testandroid.php");

try {
// Ejecutamos la accion y obtenemos el resultado
response = httpclient.execute(httppost);
HttpEntity httpEntity = response.getEntity();
resultado = EntityUtils.toString(httpEntity);
Log.e("Resultado: ",""+resultado);

Imagenes = resultado.split("#-#");
Log.e("Imagen:",""+ Imagenes[0]);

runOnUiThread(new Runnable() {
override
public void run() {
ImageView image = (ImageView) findViewById(R.id.imageView1);
String image_url = Imagenes[0];

ImageLoader imgLoader = new ImageLoader(context);
imgLoader.DisplayImage(image_url, loader, image);

TextView txt = (TextView) findViewById(R.id.textView1);
txt.setText((CantImg+1) + " de " + Imagenes.length);
}
});
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}

override
public void onResume() {
super.onResume();
if (adView != null) {
adView.resume();
}
}

override
public void onPause() {
if (adView != null) {
adView.pause();
}
super.onPause();
}

/** Called before the activity is destroyed. */
override
public void onDestroy() {
// Destroy the AdView.
if (adView != null) {
adView.destroy();
}
super.onDestroy();
}

}

kriogeN
27/08/16, 10:58:36
Te da error porque estás usando un método de instancia como si fuese un método de clase, y que encima no es de esa clase, es de su clase superior, así que aún siendo un método de clase te seguiría fallando.

Para que lo entiendas:

Clase c = new Clase();
c.Metodo(); <--- Método de instancia
Clase.Metodo(); <-- Método de clase

Como siempre digo, primero Java, después Android.

sonydei
27/08/16, 11:03:06
Gracias por responder kriogeNN, estoy aprendiendo poco a poco solo queria aprender a crear un botón para que la gente pudiera compartir las imagenes. y creí que con este codigo lo podría hacer.

Dexafree
27/08/16, 18:29:41
Gracias por responder @kriogeNN, estoy aprendiendo poco a poco solo queria aprender a crear un botón para que la gente pudiera compartir las imagenes. y creí que con este codigo lo podría hacer.

Como el propio kriogen suele decir, es importante aprender primero Java y ya despues Android :ok: