Tôi có những phép trong Manifest của tôi.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
Nhưng tôi đang sử dụng SDK phiên bản mục tiêu 15. Có yêu cầu bạn phải sử dụng SDK mục tiêu 18 không?
BTW:
Dưới đây là một số mẫu mã để tải về hình ảnh hồ sơ cá nhân từ Facebook:
private class DownloadProfilePicTask extends AsyncTask<Void,String,String> {
Bitmap profilePic;
String fileName;
String id;
String type;
URL img_value;
public DownloadProfilePicTask(String i,String ty)
{
id = i;
if(id==null)
{
//Log.v("Id is null", "Error");
}
//Log.v("Download Profile Pic Task initialized for id:",id);
type = ty;
}
@Override
protected String doInBackground(Void...param) {
String root = Environment.getExternalStorageDirectory().toString();
if(root==null)
{
return null;
}
try{
profilePic = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
}
catch (IOException e) {
e.printStackTrace();
}
if(profilePic == null)
{
//Log.v("profilePic is null", "Error");
}
//Log.v("Root for saving images",root);
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
fileName = root + "/saved_images/" + id + ".png";
//Log.v("filename is ",fileName);
File file = new File (fileName);
fileName = file.getPath();
if (file.exists()) file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
profilePic.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return id;
}
@Override
protected void onPreExecute()
{
try
{
img_value = new URL("http://graph.facebook.com/"+id+"/picture?type=" + type);
}
catch (MalformedURLException e) {
e.printStackTrace();
}
}
@Override
protected void onPostExecute(String result) {
}
}
và sau đó tôi chỉ cần gọi:
new DownloadProfilePicTask(id,type).execute();
để tải về và tự động lưu hình ảnh.
Lưu ý: Bạn sẽ phải chơi với filePath một chút cho vị trí chính xác.
Nguồn
2013-08-07 07:11:10
Bạn đang sử dụng HTC để kiểm tra? –
Đã cập nhật OP để làm rõ rằng đây là trên trình mô phỏng. Tuy nhiên, người dùng đã thông báo rằng bản cập nhật 4.3 đã phá vỡ ứng dụng và tôi tin rằng đó là do sự cố này. – f2prateek
Trình mô phỏng của bạn có gắn thẻ SD không, ý tôi là, nó xảy ra một để quên bật mô phỏng SD? :) Bạn có thể kiểm tra xem tệp có tồn tại nếu không, tạo tempfile và ghi vào dòng đầu ra mà bạn nhận được từ ContentResolver –