2025-02-17

網絡圖片查看器

清單文加入網絡訪問權限:

view plain
|<!– 訪問internet權限 –> 
<uses-permission android:name="android.permission.INTERNET"/> 
 

界面如下:

 

示例:


view plain
<span style="FONT-WEIGHT: normal">public class MainActivity extends Activity { 
    private EditText imagepath; 
    private ImageView imageView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        imagepath = (EditText) this.findViewById(R.id.imagepath); 
        imageView = (ImageView) this.findViewById(R.id.imageView); 
         
        Button button = (Button) this.findViewById(R.id.button); 
        button.setOnClickListener(new View.OnClickListener() {           
            public void onClick(View v) { 
                String path = imagepath.getText().toString(); 
                try{ 
                    byte[] data = ImageService.getImage(path);//獲取圖片數據 
                    if(data!=null){ 
                        //構建位圖對象 
                        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 
                        imageView.setImageBitmap(bitmap);//顯示圖片 
                    }else{ 
                        Toast.makeText(getApplicationContext(), R.string.error, 1).show(); 
                    }                    
                }catch (Exception e) { 
                    Toast.makeText(getApplicationContext(), R.string.error, 1).show(); 
                } 
            } 
        }); 
    } 
}</span> 
view plain
<span style="FONT-WEIGHT: normal">public class ImageService { 
    /** 
     * 獲取圖片 
     * @param path 網絡圖片路徑 
     * @return 圖片的字節數據 
     */ 
    public static byte[] getImage(String path) throws Exception{ 
        URL url = new URL(path); 
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
        //設置超時時間 
        conn.setConnectTimeout(5000); 
        conn.setRequestMethod("GET"); 
        if(conn.getResponseCode()==200){ 
            InputStream inStream = conn.getInputStream(); 
            byte[] data = StreamTool.read(inStream); 
            return data; 
        } 
        return null; 
    } 
}</span> 
view plain
<span style="FONT-WEIGHT: normal">public class StreamTool { 
    /** 
     * 讀取輸入流數據 
     * @param inStream 
     * @return 
     */ 
    public static byte[] read(InputStream inStream) throws Exception{ 
        ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024]; 
        int len = 0; 
        while( (len = inStream.read(buffer)) != -1 ){ 
            outStream.write(buffer, 0, len); 
        } 
        inStream.close(); 
        return outStream.toByteArray(); 
    } 
}</span> 


網頁源碼查看器

 

如果網頁的源碼超過屏幕的顯示位置的話,要求出現滾動條.

view plain
<ScrollView 
 android:layout_width="wrap_content"  
 android:layout_height="wrap_content"  

  <TextView   
 android:layout_width="fill_parent"  
 android:layout_height="wrap_content"  
 android:id="@+id/htmlsource" 
 /> 
</ScrollView> 

界面如下:

 

示例

view plain
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      pathText = (EditText) this.findViewById(R.id.path); 
      htmlsource = (TextView) this.findViewById(R.id.htmlsource); 
       
      Button button = (Button) this.findViewById(R.id.button); 
      button.setOnClickListener(new View.OnClickListener() { 
     
    public void onClick(View v) { 
        String path = pathText.getText().toString(); 
        try{ 
            //獲取源碼 
            String html = PageService.getHtml(path); 
            htmlsource.setText(html); 
        }catch (Exception e) { 
            Toast.makeText(getApplicationContext(), R.string.error, 1).show(); 
        } 
    } 
}); 
  } 

view plain
public class PageService { 
    /** 
     * 獲取網頁源代碼 
     * @param path 網頁路徑 
     * @return 
     */ 
    public static String getHtml(String path) throws Exception{ 
        URL url = new URL(path); 
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
        conn.setConnectTimeout(5000); 
        conn.setRequestMethod("GET"); 
        if(conn.getResponseCode() == 200){ 
            byte[] data = StreamTool.read(conn.getInputStream()); 
            return new String(data, "UTF-8"); 
        } 
        return null; 
    } 

作者“傅榮康專欄”
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *