【问题标题】:Android SD Card detection errorAndroid SD卡检测错误
【发布时间】:2014-12-24 16:35:23
【问题描述】:

我有这段代码,应该在从 Android 设备中移除 SD 卡时执行(据我了解,通过移除,用户从 Android 设备菜单或配置中选择 remove,就像您移除 USB 设备或 SD 一样任何其他系统的卡,在物理移除卡之前):

public void kartkontrol()
{
    String state = android.os.Environment.getExternalStorageState();
    if (state.equals(android.os.Environment.MEDIA_MOUNTED))
    {
        // We can read and write the media
        Durum=" Hafıza Kartı Var    (Okuma/Yazma)";

    }
    else if (android.os.Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
    {
        // We can only read the media
        Durum=" Hafıza Kartı Var     (Okuma İzni)";
    }
    else
    {
        // No external media

        Durum=" Hafıza Kartı Yok";
    }
}

卡应该被卸载并移除,但似乎它实际上是在此过程中安装的。

我做错了什么?

【问题讨论】:

    标签: android android-sdcard


    【解决方案1】:

    您可以在Android documentation 中找到更多信息。

    这里有一个很好的post 谈论通过 USB 检测已安装的 sd 卡。

    你也可以改用这个有用的方法:

    static public boolean hasStorage(boolean requireWriteAccess) {
        //TODO: After fix the bug,  add "if (VERBOSE)" before logging errors.
        String state = Environment.getExternalStorageState();
        Log.v(TAG, "storage state is " + state);
    
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            if (requireWriteAccess) {
                boolean writable = checkFsWritable();
                Log.v(TAG, "storage writable is " + writable);
                return writable;
            } else {
                return true;
            }
        } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            return true;
        }
        return false;
    }
    

    【讨论】:

      【解决方案2】:

      删除卡时的代码已安装,但必须卸载。我用另一个代码解决了这个问题。运行平稳。没问题

          sSDpath = null;
              fileCur = null;
      
      
      for (String sPathCur : Arrays.asList("ext_card", "external_sd", "ext_sd", "external","extSdCard", "externalSdCard")) // external sdcard
              {
                  fileCur = new File("/mnt/", sPathCur);
                  if (fileCur.isDirectory() && fileCur.canWrite()) {
                      sSDpath = fileCur.getAbsolutePath();
      
                      kartk.setText("Hafıza Kartı Takılı");
                      Toast.makeText(getApplicationContext(), "kkkBirinci", Toast.LENGTH_LONG).show();
                      break;
                  }
              }
              fileCur = null;
              if (sSDpath == null) {
      
                  sSDpath = Environment.getExternalStorageDirectory().getAbsolutePath();
      
                  kartk.setText("Hafıza Kartı Takılı Değil");
                  Toast.makeText(getApplicationContext(), "kkkikinci", Toast.LENGTH_LONG).show();
              }
      

      【讨论】:

        猜你喜欢
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 2020-04-26
        • 2010-10-09
        相关资源
        最近更新 更多