要弄个截图的应用,在网上找到一些源码,如下:
public static String saveToSD(Bitmap bmp) { //判断sd卡是否存在 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //文件名 long systemTime = System.currentTimeMillis(); String imageDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date(systemTime)); String mFileName = String.format(SCREENSHOT_FILE_NAME_TEMPLATE, imageDate); File dir = new File(SCREENSHOTS_DIR_NAME); //判断文件是否存在,不存在则创建 if (!dir.exists()) { dir.mkdirs(); } ...... }
String imageDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date(systemTime));
里面的这行好像是设置时间显示格式的,我不太清楚到底是怎么回事,总之这里的 SimpleDateFormat 只有api 24 之后才能用。
错误提示是:“Call requires API level 24 (current min is 19): new android.icu.text.SimpleDateFormat”。
但因为某些原因我必须在 api 19 上实现这个应用。所以我想问一下,在 api 19 里, 这一行的功能代码该怎么写呢?用什么来代替它呢?
回复讨论(解决方案)
用java包的SimpleDateFormat
用java包的SimpleDateFormat
居然还有这种坑,改完后不报错了,但又冒出个提示:
To get local formatting use 'getDateInstance()', 'getDateTimeInstance()', or 'getTimeInstance()', or use 'new SimpleDateFormat(String template, Locale locale)' with for example 'Locale.US' for ASCII dates.
这个提示看不太懂。。他是在说我可以用更好的方式完成这个功能吗?
用java包的SimpleDateFormat
居然还有这种坑,改完后不报错了,但又冒出个提示:
To get local formatting use 'getDateInstance()', 'getDateTimeInstance()', or 'getTimeInstance()', or use 'new SimpleDateFormat(String template, Locale locale)' with for example 'Locale.US' for ASCII dates.
这个提示看不太懂。。他是在说我可以用更好的方式完成这个功能吗?
我又去查了一下总算弄懂了,这是在说应该多加一个参数即国家表明一下标准。
改成这样就没问题了:
String imageDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.getDefault()).format(new Date(systemTime));
非常感谢你的帮助。