2015-12-25 53 views
6

我必須像使用Facebook一樣使用來自任何網址的圖片。但我無法理解到如何在android中可能。以及如何在我的應用程序中遷移。我展示了一個iOS問題和答案,它使用Facebook圖表api從url獲取信息,請參閱this link for facebook圖表API,所以請幫助我解決這個問題。Android:如何從任何URl或LINK獲取或獲取特定圖像,就像Facebook一樣?

見下面的圖片,我想一樣,在Android的 enter image description here

+0

你在哪裏想與圖片和文字 –

+0

。這裏是鏈接http://square.github.io/picasso/。這將顯示來自url的圖像,也可以自己處理錯誤。 –

+0

使用畢加索LIB顯示在列表視圖定製圖像 –

回答

7

最後,經過長時間的研究,我得到了答案。這對於我必須使用文件和impliment在我的項目。可以在HTML中解析,我們可以使用html的詳細信息, 現在我想要的圖像,標題和描述,所以我會從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(); 
    } 

    } 
} 

,所有數據是繼查看我的XML文件:

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

它每次都會引發異常 –

0

這你可以得到通過獲取網站的圖標。 Google提供了一個URL,將域傳遞到查詢中以獲取圖像。

另一種選擇是直接從網站域名追加favicon.ico

另外,作爲你給的Skype的例子中,獲取你通過網址,而不是任何特定圖像的預覽得到它。

(domain/favicon.ico) 
相關問題