android资源ID数据库存储方案
自编游戏APP时,头像资源要存入数据库,碰到两个问题,解决方案记录如下:
1.资源ID在安卓系统中是整数,但数据库得存储字符串,APP中使用SharedPreferences时仍然用int型。
存入时将资源ID转化为字符串:head_img为资源ID
String headName = getResources().getResourceName(head_img);
取出时转化为整数存入SharedPreferences:
headID=getResources().getIdentifier(headName,"drawable",getBaseContext().getPackageName());
2资源ID转化的字符串带符号用两个参数接收。
.资源ID转化的的字符串类似com.xiao.app:drawable/f10,自带"/"。restful风格的微服务会把它当成两个参数,拒绝服务。最简单的处理是在服务端用两个参数接收,再拚成一个字符串存储。
/*保存用户头像名*/ @GetMapping("saveHeadImg/{id}/{headName}/{park}") public void updateHeadImg(@PathVariable String id, @PathVariable String headName, @PathVariable String park) { user = userMapper.selectById(id); String complete_headName = headName + "/" + park; user.setHeadName(complete_headName); userMapper.updateById(user); }
存取成功!
以前的是程序员的老板,现在是末路出家的程序员小白。