作者garychangb (屁屁)
看板AndroidDev
标题[问题] Activity存取SD卡 失败
时间Sat Oct 4 17:46:40 2014
各位版上的大大们
如题 我写的程式无法正常读取SD卡
严格来说 应该是我可以存取SD卡
我一般正常放在SD卡里面的东西是可以读取的
但是问题就在於我用这个我写的APP在 A Activity 建立了一个资料夹
并且把图片丢进去
(这时候用android的多工切换到档案管理器识可以看到那个资料夹以及图片的)
但是 "重点" 是
我这个时候退出 A Activity 进入 B Activity
想要用B 读取我创建的资料夹里面的图片
这时就崩溃了(整个程式都死掉)
然而只要重开在点进去启用B Activity就可以正常看到那张新建的图片
不太知道是什麽问题
目前试过把 A Activity 完全关掉 再点进去使用 B
结果也还是一样 崩溃@@
不晓得有没有版上的大大知道要下什麽关键字去找问题
还是知道是为什麽
使用都正常 但就是在建新的资料夹以及图片後
第一次点进另一个Activity会直接崩溃
之後就不会了 想请问 该如何解
感谢大大们了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.99.170
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1412416006.A.0DD.html
1F:→ ckvir: 有加权限吗?10/04 18:06
有 读取 写入都有
一开始以为是这个问题 後来还是一样
※ 编辑: garychangb (39.9.152.42), 10/04/2014 18:39:58
2F:→ ckvir: 崩溃讯息是啥10/04 18:42
应用程式终止 @@ 所以才令人苦恼
※ 编辑: garychangb (220.143.197.16), 10/04/2014 19:31:34
3F:推 JULONE780701: 人家是要问你LOG吧....10/04 19:37
4F:→ ckvir: ....10/04 20:00
https://www.dropbox.com/s/yd9frlynpc0ixlj/log.txt?dl=0
这是我设中断点
(切换Activity後 startActivity(intent);)
直接崩溃 後面的LOG 都不懂@@
而且也不知道LOG有没有
拍谢拍谢 小弟比较笨
※ 编辑: garychangb (220.143.197.16), 10/04/2014 20:25:20
是 Caused by: java.lang.NullPointerException ???
※ 编辑: garychangb (220.143.197.16), 10/04/2014 20:29:08
5F:→ sdyy: 你的log写得很清楚阿 执行到oncreate 218时10/04 20:37
6F:→ sdyy: reSize null point阿 没new?10/04 20:37
7F:→ ckvir: 你的log看不到耶,你说你在startintent就crash, 那你有把10/04 20:41
8F:→ ckvir: 另一个activity写到xml里面吗 10/04 20:41
RESIZE那边好像问题 所以是NullPointerException@@
有NEW
c大 什麽意思不太懂 他正常是执行另一个activity後会出现xml的
还是你的意思是写log在新的那个的xml里?
※ 编辑: garychangb (220.143.197.16), 10/04/2014 20:50:06
※ 编辑: garychangb (220.143.197.16), 10/04/2014 20:53:22
9F:→ JULONE780701: 我只能猜你reSize失败,return null之後就当了10/04 21:03
10F:→ JULONE780701: 程式码贴出来吧...不然要人通灵吗= =?10/04 21:04
public Bitmap reSize(){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
int rand= (int)(Math.random()* DickActivity.favfiles.length+1);
Bitmap bitMap =
BitmapFactory.decodeFile("/sdcard/MindWave/Interest/"+rand+".jpg",options);
int width = bitMap.getWidth();
int height = bitMap.getHeight();
// 设置想要的大小
int newWidth = 1320;
int newHeight = 1320;
// 计算缩放比例
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 取得想要缩放的matrix参数
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的图片
return bitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height,
matrix,true);
}
※ 编辑: garychangb (220.143.197.16), 10/04/2014 21:14:46
11F:推 JULONE780701: 第一招:在manifest加android:largeHeap="true"10/04 21:57
12F:→ JULONE780701: 还不行的话...一定要1320这麽大? 10/04 21:58
13F:→ JULONE780701: 觉得400刚好,800极限10/04 21:58
14F:→ JULONE780701: 第二招你在decodeFile的options 10/04 22:04
15F:→ JULONE780701: options.inSampleSize去缩放大小10/04 22:05
16F:→ JULONE780701: 如果可以记得在你不用的bitmap.recycle()(心安的?)10/04 22:06
17F:→ JULONE780701: 因为你连续建了两张很大的bitmap...其实非常危险的10/04 22:11
18F:→ ckvir: 我的意思是说你有在 AndroidManifest.xml 加上b的activity10/04 22:25
19F:→ ckvir: 吗?10/04 22:25
20F:→ garychangb: 安心的 等等看一下 吃饭中10/04 22:37
21F:→ garychangb: 应该是有的 不然怎麽会 关掉重开 就可以读到图片开始10/04 22:39
22F:→ garychangb: 正常运作了10/04 22:39
23F:→ garychangb: 那个是加在 b的active 描述那边吗10/04 22:39
现在奇怪的就是为什麽第一次会崩溃
而关掉重开却可以正常的执行
(有读到我要的照片)
※ 编辑: garychangb (220.143.197.16), 10/04/2014 22:50:24
现在严重怀疑是东西没有存完全
因为现在A执行完後 直接关掉程式
然後再打开 直接执行B 就可以了
还是一直写
Caused by: java.lang.NullPointerException
所以怀疑可能是档案没有存完
但是我有把A关掉@@
不解~@@
※ 编辑: garychangb (220.143.197.16), 10/04/2014 23:18:20
24F:→ Shopee: 有没有可能Activity A写完档案後没有flush()及close()?10/05 10:07
25F:推 sdyy: 这边很容易有问题DickActivity.favfiles.length+110/05 11:19
26F:→ sdyy: 除非你这变数是static final10/05 11:19
有flush 也有close
是static耶 那个是从 DickActivity传过来的static欧 我改改看 说不定是关掉反而传不
过来
※ 编辑: garychangb (27.246.30.83), 10/06/2014 00:29:03
27F:→ sdyy: 你这样用不是传过来而是直接使用 如果DickActivity不存在 10/06 20:42
28F:→ sdyy: 你就会遇到null point 10/06 20:42