我正在测试我的设备,我在这一行得到了错误
Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
所以,我的设备中没有外部存储器,对吗?如何在内部存储器上保存图像?如果我把这句话......
FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE);
课程完成
public class ImageStorage {
public static String saveFile(Bitmap bitmap, String filename) {
try {
FileOutputStream out = context.openFileOutput(filename, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static File getImage(String imagename) {
File mediaImage = null;
try {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root);
if (!myDir.exists())
return null;
mediaImage = new File(myDir.getPath() + "/images/"+imagename);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mediaImage;
}
public static boolean checkifImageExists(String imagename)
{
Bitmap b = null ;
File file = ImageStorage.getImage("/"+imagename+".jpg");
String path = file.getAbsolutePath();
if (path != null)
b = BitmapFactory.decodeFile(path);
if(b == null || b.equals(""))
{
return false ;
}
return true ;
}
}
“上下文”一词标记为“无法解决”。我这个问题花了一个星期,请帮帮我
答案 0 :(得分:0)
由于此类默认情况下不能访问Context
,因此您需要在此方法中传递它(请参阅我添加Context
参数的方式):
public static String saveFile(Context context, Bitmap bitmap, String filename) {}
所以当你调用它时,你需要传递某种上下文。如果您从Activity
拨打电话,则可以使用this
。
答案 1 :(得分:0)
public static String saveFile(Bitmap bitmap, String filename) {
try {
FileOutputStream out = context.openFileOutput(filename, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
您的代码无法正常工作的原因:context
无法解决。在代码中,没有任何名为context
的内容。您必须将其添加为参数(Activity
扩展Context
,因此您可以将其作为参数传递,并在Activity
中调用此内容:saveFile(this, mbitmap, mfilename)
public static String saveFile(Context context, Bitmap bitmap, String filename)...
那,或者你必须删除static
,并使该方法成为Activity
课程的成员,并将context
更改为this
(或删除它)。见下文。
public class MyActivity extends Activity {
//your activity members
public String saveFile(Bitmap bitmap, String filename) {
try {
FileOutputStream out = this.openFileOutput(filename, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
如果从内部AsyncTask
类调用该方法,请调用MyActivity.this.openFileOutput(filename, Context.MODE_PRIVATE)