delphi xe 在Andriod程序中获取外置SD卡根目录


本文整理自网络,侵删。

 我们知道,Andriod是基于Linux的,所以正常的存贮设备都被挂载到/mnt目录下,我们查找SD卡根目录就是要在下面找到那个卡是外置的SD卡,但遗憾的是,目前没有一种标准的方法来做到这一点(包括Andriod本身)。下面我为大家提供了一个函数来完成这一功能:


function GetExtSDDir: String;
  var
    AList: TStringDynArray;
    S: String;
    I, J, ALastNo, ANo: Integer;
  const
    ExtSDCardNames: array [0 .. 7] of String = ('/mnt/ext_sdcard',
      '/mnt/extsd',
      '/mnt/ext_card',
      '/mnt/external_sd',
      '/mnt/ext_sd',
      '/mnt/external',
      '/mnt/extSdCard',
      '/mnt/externalSdCard'
      );
  begin
  Result := '';
  AList := TDirectory.GetDirectories('/mnt');
  ALastNo := 0;
  for I := 0 to High(AList) do
    begin
    S := AList[I];
    for J := 0 to High(ExtSDCardNames) do
      begin
      if S = ExtSDCardNames[J] then
        begin
        Result := S + '/';
        Exit;
        end
      end;
    if StartWithW(PWideChar(S),'/mnt/sdcard', False) then
      begin
      if TryStrToInt(RightStrW(AList[I], Length(AList[I]) - 11, False), ANo)
      then
        begin
        if ANo > ALastNo then
          begin
          ALastNo := ANo;
          Result := AList[I] + '/';
          end;
        end;
      end;
    end;
  end;
这个函数使用了QString.pas单元的StartWithW和RightStrW两个函数,TDirectory对象需要引入ioutils单元。ExtSDCardNames常量定义了目前已经的SD卡根目录的挂载名称,可能还有更多,如果你发现了,可以随时补充就好。在找不到上述关键词时,会尝试搜索sdcard1/sdcard2这样的目录,并取其中最大的那个值为SD卡的根目录。

相关阅读 >>

Delphi 正则判断是否包含数字

Delphi windows 编程[15] - 菜单消息: wm_command

Delphi b编码以及bt种子文件分析

Delphi memo1 字符串快速查找定位

Delphi xe 自己编辑xe2 vcl style(皮肤/skin)

Delphi vcl图像的二值化

Delphi firedac 下的 sqlite [5] - 数据的插入、更新、删除

Delphi 关于rs485总线通信协议开发注意事项

Delphi webservices传数据

Delphi combobox的属性和事件、及几个鼠标事件的触发

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...