求助:关于安卓手机以存储设备连接电脑时apk无法访问手机内存的问题

pvlking 2014-11-12 05:09:54
最近开发一个安卓应用,用Environment.getExternalStorageDirectory(),获取sd卡目录,然后在sd上创建SQLite数据库。程序运行过程中时常会对数据库进行读写。

最近买了台华为G730的手机,用来测试。发现如果手机以“存储设备的模式”连接电脑后,apk程序不能读写sd卡了,照成程序崩溃。连手机自己的文件管理程序也无法访问手机内存和SD卡内存。 手边有个三星的手机连接的时候没有“存储模式”这个选项。

1.这个问题是不是有共性,不管什么手机只要是以“存储模式”连接电脑后,就不能读写手机内存和SD卡了?
2.这个问题能解决吗? 至少有什么方法让程序不崩溃,不然太不友好了。以存储模式连接手机时是否有通知?(能让我做个标识符)。能否判断当前是什么模式存储的(apk自己判断)
...全文
290 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
triplesky001 2014-12-01
  • 打赏
  • 举报
回复
引用 3 楼 pvlking 的回复:
[quote=引用 1 楼 lulong1985 的回复:] 你把SQLite数据库刻意的放在sd卡这个动作就很让人费解,或者是你有什么特殊的需求,但这个绝对是不安全的,因为有的手机即使不选择存储设备的模式都看不到手机里的东西的,我前段时间用过的一个测试机好像是华为的一款。
放sd卡纯属是拿路径方便,上面api一调用就有了,你们离线数据库一般放哪的?data目录? 另外华为这款手机调API拿到的是手机内存(应该是内置Sd卡的概念),明天截个图。[/quote] 如果是安装APP的时候就代入的话,就放在RAW里面。
pvlking 2014-11-14
  • 打赏
  • 举报
回复
先结贴,暂时要弄点其他东西
昵__称 2014-11-13
  • 打赏
  • 举报
回复
数据库一般在 data/data/包名/database/ 这个目录下
pvlking 2014-11-12
  • 打赏
  • 举报
回复
引用 2 楼 u014387289 的回复:
sqlite放SD卡很奇怪。 你在读写的时候判断是否挂载SD卡如果没有挂载SD卡,就不读写sqlite
只是图了个方便,没考虑太多,接触安卓开发也没多久,你们一般把系统被子文件啊,数据库都放哪的?
pvlking 2014-11-12
  • 打赏
  • 举报
回复
引用 1 楼 lulong1985 的回复:
你把SQLite数据库刻意的放在sd卡这个动作就很让人费解,或者是你有什么特殊的需求,但这个绝对是不安全的,因为有的手机即使不选择存储设备的模式都看不到手机里的东西的,我前段时间用过的一个测试机好像是华为的一款。

放sd卡纯属是拿路径方便,上面api一调用就有了,你们离线数据库一般放哪的?data目录?
另外华为这款手机调API拿到的是手机内存(应该是内置Sd卡的概念),明天截个图。
昵__称 2014-11-12
  • 打赏
  • 举报
回复
sqlite放SD卡很奇怪。 你在读写的时候判断是否挂载SD卡如果没有挂载SD卡,就不读写sqlite
triplesky001 2014-11-12
  • 打赏
  • 举报
回复
你把SQLite数据库刻意的放在sd卡这个动作就很让人费解,或者是你有什么特殊的需求,但这个绝对是不安全的,因为有的手机即使不选择存储设备的模式都看不到手机里的东西的,我前段时间用过的一个测试机好像是华为的一款。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧