我正在尝试从内存中添加图像。
我正在尝试将此代码用于 p>
ImageView message_image=(ImageView)v.findViewById(R.id.message_image);
File imgFile = new File(img_db);
Log.e("img_db",img_db+"------------->");
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
message_image.setImageBitmap(myBitmap);
}
这里img_db是我从我的Sqlite表中获取的路径。当我记录它时,我得到了像这样的fath
E / img_db:file:///storage/sdcard0/download/img11024FILE.jpg------------->
我已经在我的清单
中给予了这个许可 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
下载图片并保存到手机我正在使用此代码
public String downloadFile(String url_i_) {
try {
URL url
= new URL(url_i_);
Log.e("url_fetch--->img", String.valueOf(url));
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
// connect
urlConnection.connect();
// set the path where we want to save the file
SDCardRoot = Environment.getExternalStorageDirectory();
// create a new file, to save the downloaded file
rand = new External_function().getnRandom();
file = new File(SDCardRoot, "/download/img" + rand+".jpg");
FileOutputStream fileOutput = new FileOutputStream(file);
InputStream inputStream = urlConnection.getInputStream();
// this is the total size of the file which we are downloading
totalSize = urlConnection.getContentLength();
// create a buffer...
byte[] buffer = new byte[1024];
int bufferLength = 0;
while ((bufferLength = inputStream.read(buffer)) > 0) {
fileOutput.write(buffer, 0, bufferLength);
downloadedSize += bufferLength;
// update the progressbar //
float per = ((float) downloadedSize / totalSize) * 100;
/*cur_val.setText("Downloading.... " + downloadedSize
+ "KB / " + totalSize + "KB (" + (int) per
+ "%)");*/
String i = "Downloading.... " + downloadedSize
+ "KB / " + totalSize + "KB (" + (int) per
+ "%)";
}
fileOutput.close();
file = new File(Environment.getExternalStorageDirectory() + "/download/img" + rand+".jpg"); // set your audio path
file_path= String.valueOf(Uri.fromFile(file));
} catch (final Exception e) {
Log.e("////////////////file", String.valueOf(e));
}
return file_path;
}
在我的服务类中,当我得到图像路径作为回报然后我将它存储在我的sqlite表中,就像这样
String img = socketOperator.downloadFile(event_img);
localstoragehandler.insert(id, msg_user_by, msg_read_by, msg_content, msg_grp_id, msg_sent_time,type,event_time,event_lat,event_log,event_name,event_address,img);
我用图片和id检查了路径是一样的。我试试这个但是真的不知道我做错了什么。
答案 0 :(得分:1)
您需要此权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
阅读 _EXTERNAL_STORAGE而非WRITE_EXTERNAL_STORAGE
答案 1 :(得分:0)
@CommonsWare已经回答了这个问题。尝试改变你的道路。 (Original Answer)
为什么会发生这种情况?
由于多年来外部存储路径发生了变化,因此您首先应该从未对路径进行硬编码。
如何在更正式和正确的#34;中获取路径目录?办法 而不是硬编码路径?
使用Environment.getExternalStorageDirectory()。
在您的测试环境中,/ sdcard是符号链接或/ storage / sdcard0的硬链接,由设备制造商设置。但是,并不能保证所有设备都有这样的/ sdcard符号链接。
如果这对您没有帮助。这肯定会:Reading from internal storage.
更新
请查找此内容的所有用法&#34; / download / img&#34; ...
你错过了&#34; /&#34; ...将其替换为&#34; / download / img /&#34;