簡體   English   中英

Android,保存到內部存儲中

[英]Android, to save into internal Storage

我正在對自己的設備進行測試,但在此行中得到FALSE

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 ;
}

}

單詞“ context”被標記為“無法解析”。 我已經在這個問題上度過了一個星期,請幫助我

因為默認情況下此類不具有訪問Context權限,所以您需要在這樣的方法中傳遞它(請參閱我如何添加Context參數):

public static String saveFile(Context context, Bitmap bitmap, String filename) {}

因此,當您調用它時,您將需要傳遞某種上下文。 如果從Activity調用它,則可以簡單地使用this

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM