Android几个实战经验

5,358 阅读1分钟

android studio svn commit changelist delete

在提交代码的时候,会提示Partial Commit of Active Changelist,一般会选择Yes,但如图,我这样强迫症患者,就想删掉 解决方案:

The APK file does not exist on disk.Error while Installing APK

运行apk,直接报这个错误,clean也无效 解决方案:

Android Studio获取SHA1

开发地图,在他们的后台需要填SHA1,以前是填MD5值,MD5值获取很简单,那SHA1怎么获取呢? 步骤如下: 1、全局配置jdk1.8.0_45\bin(或cd进入bin目录) 2、keytool -v -list -keystore 你的keystore路径 3、输入秘钥库口令:如果没设置,这里就是空,直接回车就进去了。

Android 6.0 Dialog text doesn't appear

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("退出登录");
builder.setMessage("您确定要退出登录吗?");
builder.setNegativeButton("取消", null);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        HashMap params = new HashMap();
        postData(API.LOGOUT, params, false, new ResponseCallBack(Settingctivity.this) {
            @Override
            public void onSuccessResponse(String bean, String msg) {

            }
            @Override
            public void onFailResponse(String msg) {

            }
        }, null, null, true);
    }
});
builder.create().show();

正常这样是没问题,但是在Android 6.0发现文本不显示,如图:

解决方案:

/**
 * http://stackoverflow.com/questions/33228454/android-6-0-dialog-text-doesnt-appear
 *
 * @param context
 * @return
 */
public static AlertDialog.Builder alertDialogBuilder(Context context) {
    AlertDialog.Builder builder;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Light_Dialog_Alert);
    } else {
        builder = new AlertDialog.Builder(context);
    }
    return builder;
}

然后初始化

AlertDialog.Builder builder = alertDialogBuilder(this);

URLEncoder.encode

如果网络请求,参数包含了中文,那需要URLEncoder转下

URLEncoder.encode(参数值 "utf-8")

单击返回键两次退出

@Override 
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
            long secondTime = System.currentTimeMillis(); 
            if (secondTime - firstTime > 800) {//如果两次按键时间间隔大于800毫秒,则不退出 
                Toast.makeText(MainActivity.this, "再按一次退出程序...", 
                        Toast.LENGTH_SHORT).show(); 
                firstTime = secondTime;//更新firstTime 
                return true; 
            } else { 
                //否则退出程序操作
            } 
        } 
        return super.onKeyUp(keyCode, event); 
    }

……

更多实战经验见我的博客:wuxiaolong.me/2015/08/10/…

微信公众号