Android,保存到内部存储中
我在测试我的分区,我在这行中出错了Android,保存到内部存储中,android,storage,internal,Android,Storage,Internal,我在测试我的分区,我在这行中出错了 Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 因此,我的设备中没有外部存储器,对吗?如何在内部存储器上保存图像?如果我把这条线 FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIV
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 ;
}
}
无法解析标记为的单词上下文。我已经花了一周的时间讨论这个问题,请帮助我,因为这个类默认情况下没有访问上下文的权限,您需要像这样在方法中传递它。请参见我如何添加上下文参数:
public static String saveFile(Context context, Bitmap bitmap, String filename) {}
因此,当您调用它时,您需要传递某种上下文。如果你从活动中调用它,你可以简单地使用它
代码无法工作的原因:无法解析上下文。在代码中,没有所谓的上下文。您必须将其作为参数添加到活动扩展上下文中,以便可以将其作为参数传递,并在活动中调用它:saveFilethis、mbitmap、mfilename
否则,您必须删除static,使该方法成为活动类的成员,并将上下文更改为该类或将其删除。见下文
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.openFileOutputfilename,Context.MODE_PRIVATE显示其余代码!显然你以前没有定义上下文,但是如果没有任何代码,我们就帮不了你。OKs Jeffrey,我把方法放在这个代码所在的地方,它是活动吗?请发布更多的上下文:不,这不是一个活动,如果不是活动的调用?我从另一个泛型类中调用它,在这种情况下,您还必须向该类传递上下文,就像我们在上面的答案中所做的那样;将其作为参数添加。我从公共类GetImages Extendes AsyncTask调用如果AsyncTask是活动中的子类,则可以调用ActivityName.this,其中ActivityName是活动的名称。如果AsyncTask不在活动中,则需要将上下文传递给构造函数中的AsyncTask,以便再次添加上下文参数,就像在回答中一样。Oks,我删除了静态,现在openFileOutput未定义,因为您没有在活动中声明方法,而是在其他地方声明方法。作为参数传递。我从任务类调用它
public static String saveFile(Context context, Bitmap bitmap, String filename)...
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();
}
}
}