码上啥都有 - 2016年9月
type: channel
link: http://www.litecoder.top/index.php/2016/09/
description: APP开发 安卓开发 iOS开发 flutter开发 网站开发 小程序开发 安卓 诸葛先生 临沂千合网络科技 码上啥都有 非淡泊无以明志,非宁静无以致远.
items: 关于webview上传图片的坑
items: 解决 WordPress“正在执行例行维护，请一分钟后回来”

关于webview上传图片的坑
type: item
date: 2016-09-01T11:36:21+08:00
description: 项目中遇到了需要在webview上传图片的需求，搜索了一把，找到几个可行的方法，同时也踩了个webview的坑，总结一下我找到的是这样的方法***首先 重写WebChromeClient 添加openFileChooser 方法 // For Android 3.0+public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {//最终调用的都是这个if (mUploadMessage != null) return;//坑就在这里 看后边注释mUploadMessage = uploadMsg;selectImage();}// For Android < 3.0public void openFileChooser(ValueCallback<Uri> uploadMsg) {openFileChooser(uploadMsg, "");}// For Android > 4.1.1public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {openFileChooser(uploadMsg, acceptType);}*** 然后自己实现selectImage()方法```private void selectImage() {//模仿IOS的弹出框List<map <String, String>> list = new ArrayList<>();HashMap ch1 = new HashMap<>();HashMap ch2 = new HashMap<>();HashMap ch3 = new HashMap<>();ch1.put("key", "从相册选择");ch2.put("key", "拍照上传");ch3.put("key", "取消"); list.add(ch1);list.add(ch2);list.add(ch3);ListAdapter ad = new SimpleAdapter(this, list, R.layout.my_simple_list_item_1, new String[]{"key"}, new int[]{android.R.id.text1});chosePicDialog = new AlertDialog.Builder(this).setAdapter(ad, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {switch (i) {case 0:getImageFromAlbum();break;case 1:getImageFromCamera();break;case 2:mUploadMessage.onReceiveValue(null);//这里是坑，如果取消了 不调用这句mUploadMessage.onReceiveValue()的话 整个webview就都没有响应了mUploadMessage = null;//还有这里 上边已标出break;}}}).setCancelable(false).create();chosePicDialog.getWindow().setGravity(Gravity.BOTTOM);chosePicDialog.show();} ```然后分别实现 从图库选择和拍照上传的方法```/*** 调用相册/protected void getImageFromAlbum() {Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/");//相片类型startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);} /*** 调用相机*/protected void getImageFromCamera() {//这里采用的是获取拍照原图的方法String state = Environment.getExternalStorageState();if (state.equals(Environment.MEDIA_MOUNTED)) {File f = FileUtil.getNewPicFilePath();Uri u = Uri.fromFile(f);Intent intent = new I…

解决 WordPress“正在执行例行维护，请一分钟后回来”
type: item
date: 2016-09-01T11:09:03+08:00
description: ps：今天看到wordpress有更新了，果断更新，但是不知道怎么回事，结果一直停留在“正在执行例行维护，请一分钟后回来”的状态了，这个问题一定有解决方法，所以搜索到了这篇文章，已测，可行。感谢原作者WordPress在升级程序、主题、插件时，都会先切换到维护模式，也就是显示 “正在执行例行维护，请一分钟后回来（Briefly unavailable for scheduled maintenance. Check back in a minute）”，如果升级顺利，也就几秒左右就恢复正常；但是如果由于网速不佳等原因导致升级中断，WordPress就会一直停留在维护模式，不论前台还是后台，都一直显示“正在执行例行维护，请一分钟后回来“。如何解决这个问题呢？1.马上通过FTP登录你的网站，删除WordPress根目录下的 .maintenance ，刷新网页即可。2.但是有时候你会发现，根目录根本就没有 .maintenance！倡萌最近就遇到这个问题，最初以为是隐藏了，所以使用SSH登录服务器，但是依旧没有看到，怎么办？其实有一个比较简单的办法，直接新建一个空的txt文本，上传到主机空间中，然后重命名为 .maintenance，然后你会发现 .maintenance 居然不见了！不用担心，重新刷新你的网站，是不是正常了？！3.如果还是不行，或者你想让它以后可以显示 .maintenance ，那就打开 /wp-admin/includes/class-wp-filesystem-direct.php找到下面的代码：function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {// safe mode fails with a trailing slash under certain PHP versions.$path = untrailingslashit($path);if ( empty($path) )return false;if ( ! $chmod )$chmod = FS_CHMOD_DIR;if ( ! @mkdir($path) )return false;$this->chmod($path, $chmod);if ( $chown )$this->chown($path, $chown);if ( $chgrp )$this->chgrp($path, $chgrp);return true;}将其改为：function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {// safe mode fails with a trailing slash under certain PHP versions.if ( ! $chmod )$chmod = $this->permission;if(ini_get('safe_mode') && substr($path, -1) == '/'){$path = substr($path, 0, -1);}if ( ! @mkdir($path) )return false;$this->chmod($path, $chmod);if ( $chown )$this->chown($path, $chown);if ( $chgrp )$this->chgrp($path, $chgrp);return true;}然后刷新FTP目录，是不是看到.maintenance了，删除它吧！原文链接：http://www.wpdaxue.com/briefly-unavailable-for-scheduled-maintenance.html