2015-12-25 9 views
6

devo usare l'immagine da qualsiasi URL come fa Facebook. Ma non riesco a capire come sia possibile in Android. e come posso migrare nella mia applicazione. mostro una domanda iOS e una risposta che utilizza facebook graph api per ottenere informazioni dall'URL, vedi il link this per l'API del grafico di Facebook, quindi per favore aiutami per questa soluzione.Android: come recuperare o ottenere un'immagine specifica da qualsiasi URL o LINK come Facebook?

vedi sotto immagine che voglio come quella in Android enter image description here

+0

Dove vuoi visualizzare le immagini delle –

+0

in ListView personalizzato con immagini e testo –

+0

uso picasso lib. ecco il link http://square.github.io/picasso/. questo mostrerà le immagini dall'URL e gestirà anche l'errore da solo. –

risposta

7

Alla fine ho ottenuto risposta dopo lunghe ricerche. Quello per devo usare il file e l'impianto nel mio progetto. che può essere analizzato in HTML e che possiamo usare per i dettagli da html, Ora voglio immagine, titolo e descrizione, così otterrò da HTML.

public class MainActivity extends Activity { 

Document document; 
String url ; 
ProgressDialog mProgressDialog; 
TextView t1, t2; 
ImageView img; 
String title, desc, img_url; 
Button btn; 
EditText et; 
Bitmap bitmap; 
String UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    img = (ImageView) findViewById(R.id.imgIcon); 
    t1 = (TextView) findViewById(R.id.txtTitle); 
    t2 = (TextView) findViewById(R.id.txtDesc); 
    btn = (Button) findViewById(R.id.button); 
    et = (EditText) findViewById(R.id.editText); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      url = et.getText().toString(); 
      new FetchWebsiteData().execute(); 
     } 
    }); 
} 

private class FetchWebsiteData extends AsyncTask<Void, Void, Void> { 
    String websiteTitle, websiteDescription, imgurl; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgressDialog = new ProgressDialog(MainActivity.this); 
     mProgressDialog.setMessage("Loading..."); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      // Connect to website 
      Document document = Jsoup.connect(url).userAgent(UserAgent).get(); 
      // Get the html document title 
      websiteTitle = document.title(); 
      Elements description = document.select("meta[name=description]"); 
      // Locate the content attribute 
      websiteDescription = description.attr("content"); 
      String ogImage = null; 
      Elements metaOgImage = document.select("meta[property=og:image]"); 
      if (metaOgImage != null) { 
       imgurl = metaOgImage.first().attr("content"); 
       System.out.println("src :<<<------>>> " + ogImage); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     t1.setText(websiteTitle + "------" + imgurl); 
     t2.setText(websiteDescription); 
     Picasso.with(getApplicationContext()).load(imgurl).into(img); 
     mProgressDialog.dismiss(); 
    } 

    } 
} 

E il mio file XML per la visualizzazione di tutti i dati è la seguente:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.copy.urlparsing.MainActivity"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imgIcon" 
    android:src="@drawable/asf" 
    android:layout_alignBottom="@+id/txtDesc" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="Medium Text" 
    android:id="@+id/txtTitle" 
    android:layout_above="@+id/imgIcon" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="Medium Text" 
    android:id="@+id/txtDesc" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="53dp" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/button" 
    android:layout_below="@+id/editText" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
</RelativeLayout> 
+0

genera eccezioni ogni volta –

0

Questo si può ottenere con il recupero favicon del sito. Google ha fornito uno URL, passando il dominio alla query che recupererà l'immagine.

L'altra opzione è quella di farlo direttamente dal sito aggiungendo favicon.ico in nome di dominio

anche come ti ha dato l'esempio di Skype, è il recupero di anteprima URL si passa, senza alcun particolare immagine.

(domain/favicon.ico) 
Problemi correlati