Android 安卓手机存储

Android 安卓手机存储,android,Android,我正在开发一款Android应用程序。我注意到的一点是,当我想使用存储时,基本上有两种选择: 使用包存储(代码如下): 如果有SD卡,我可以使用外部存储器: /** * check if the phone has SD card * @return */ public static boolean hasSDCard(){ boolean fHasSDCard = false; if(Environment.MEDIA_MOUNTED.equals(E

我正在开发一款Android应用程序。我注意到的一点是,当我想使用存储时,基本上有两种选择:

  • 使用包存储(代码如下):

  • 如果有SD卡,我可以使用外部存储器:

    /**
     * check if the phone has SD card
     * @return
     */
    public static boolean hasSDCard(){
            boolean fHasSDCard = false;
    
            if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
                    fHasSDCard = true;
            }
    
            return fHasSDCard;
    }
    
    /**
     * get external storage directory path
     * @return
     */
    public static String getExternalStoragePath(){
    
            String strPath = "";
    
            if(hasSDCard()){
                    strPath = Environment.getExternalStorageDirectory().getPath();
            }
    
            return strPath;
    }
    
  • 现在,我的代码主要是在SD卡盒上的继电器,若并没有SD卡,很可能会断开。我的问题是,有没有没有没有SD卡的android设备?如果没有SD卡,将数据放入包路径是否正确


    谢谢

    有些设备没有SD卡。它们的内部内存上有一个分区,您可以称之为共享内存。查看developer.android.com上的文档,您可以阅读以下内容:

    注意:这里的“外部”一词不要混淆。此目录最好被视为媒体/共享存储。它是一个文件系统,可以保存相对大量的数据,并在所有应用程序之间共享(不强制执行权限)。传统上,这是一个SD卡,但它也可以作为设备中的内置存储器来实现,该设备不同于受保护的内部存储器,并且可以作为文件系统安装在计算机上

    因此,正如Chris在上面所评论的,如果设备未通过usb存储或类似方式安装到计算机上,则应始终存在SD卡分区。您的检查方法应该可以正常工作。如果不可用,请告诉用户在连接时卸载手机

    但您可能会问自己:“我是否希望其他应用程序访问此数据?”。如果不是,最好的选择是使用内部存储器。对于某些使用SD卡且没有太多内存的设备来说,这可能是一个问题。可能会检查两个存储是否有足够的空间?

    Google Play销售的任何设备最初都没有外部存储,但如果是可移动的,则可以将其删除,在具有USB大容量存储的版本中,由于通过USB安装到PC上,因此可能无法使用。或者它可能已满,或者可能已损坏/损坏。所以是的,它并不总是可用的。但有许多应用程序会抱怨,如果不是这样,就会禁用功能(而不是崩溃)。
    /**
     * check if the phone has SD card
     * @return
     */
    public static boolean hasSDCard(){
            boolean fHasSDCard = false;
    
            if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
                    fHasSDCard = true;
            }
    
            return fHasSDCard;
    }
    
    /**
     * get external storage directory path
     * @return
     */
    public static String getExternalStoragePath(){
    
            String strPath = "";
    
            if(hasSDCard()){
                    strPath = Environment.getExternalStorageDirectory().getPath();
            }
    
            return strPath;
    }