平台是android2.2.
应用背景,从手机向服务器上传图片。
错误1,开始做从手机本地选择图片时,用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),打开图片。结果老是出错提示我强关应用。看了api,Environment.DIRECTORY_PICTURES指定的目录是
Standard directory in which to place pictures that are available to the user. Note that this is primarily a convention for the top-level public directory, as the media scanner will find and collect pictures in any directory.
即/sdcard/Pictures/ ,后来才知道我手机上没这个目录。到有个image目录,那就写Environment.getExternalStoragePublicDirectory("image"),就没错了。这个与乱码没关系,做下记录。
错误2,从j2ee平台传向android平台时的乱码问题。环境背景是我们以http方式请求action方法,如果你要从action中向android平台返回,比如“保存成功”这四个汉字。然后你在android平台,用Toast.makeText显示出来,弄不好就是乱码。
我的解决方法:在action层用流写时要先用特定的编码写,如下代码
OutputStream os = getResponse().getOutputStream();
String success= new String("上传成功" + fileName);
getResponse().setContentLength(success.getBytes("UTF-8").length);
os.write(success.getBytes("UTF-8"));
然后在android平台接收时用
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
String info = br.readLine();
以对应的编码方式读出。
错误3,从android平台向j2ee平台传汉字时出现乱码问题。
应用背景,选择一个汉字命名的图片传到j2ee平台,结果在j2ee平台方面收到的文件名是乱码。
我的解决方法:在android平台方向输出流写汉字文件名时,也要先以特定的编码方式编码
DataOutputStream ds = new DataOutputStream(con.getOutputStream());
。。。。。
ds.write(filename.getBytes("UTF-8"));
然后在j2ee平台方接收时,再以对应的编码方式读取,当然如果你的平台默认是与你先前编码方式一致的话,可以不用处理。
这些问题,从春节放假最后一天,到今天跨了二年,才得到解决。