//這個問題最近困擾了幾天了,本來做一個DEMO使用的是微信分享功能,我想使用一個固定的Logo圖標來進行文本分享。在做項目的時候我使用的是SD卡中的一張圖片,但是,當該應用裝到另外一部手機上就不能使用了,因而想着直接把這張圖片放到項目目錄下。一個朋友給了大體的思路,我花了一段時間終於解決了,現在和大家分享一下。大家有什麼問題和建議可以向我留言,我們共同解決、共同進步。若有更好的方法解決該問題,請告訴我,謝謝!
思路如下:
1、把圖片放到項目下的assets文件夾下。
2、通過一個方法將該文件夾下面的文件轉換成爲一個輸入流。
3、將輸入流轉換成爲一個字節數組。
4、創建一個輸出流,將byte[]寫入到sd卡中(此時自己可以對原來的圖片重新命名)。
5、通過Environment類中的一些方法就可以獲取String類型的絕對路徑了。
代碼實現如下:
private byte[] InputStreamToByte(InputStream is) throws IOException {
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
int ch;
while ((ch = is.read()) != -1) {
bytestream.write(ch);
}
byte imgdata[] = bytestream.toByteArray();
bytestream.close();
return imgdata;
}
/**
*
* @param bs
* 把字節數組寫到SDCard中,然後再讀取該圖片
*/
public void writetoSDCard(byte []bs){
try {
FileOutputStream out=new FileOutputStream(new File("/sdcard/test.png")); //重新命名的圖片爲test.png.想要獲取的圖片的路徑就是該圖片的路徑
try {
out.write(bs);
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sendImgFriend(){
InputStream abpath=getClass().getResourceAsStream("/assets/picture/logo.png");
try {
writetoSDCard(InputStreamToByte(abpath));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String path_img=Environment.getExternalStorageDirectory().getAbsolutePath()+/test.png;
//剩餘的代碼省略....