<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[码农曾的博客]]></title><description><![CDATA[正在加载中......]]></description><link>https://blog.youkuaiyun.com/zk94_Android</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zk94_Android]]></copyright><item><title><![CDATA[Android 通过AccessibilityService实现微信聊天记录导出]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/84652992</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/84652992</guid><author>zk94_Android</author><pubDate>Fri, 30 Nov 2018 15:32:33 +0800</pubDate><description><![CDATA[接上Android 微信聊天记录、联系人备份并导出为表格继续讲

不太了解AccessibilityService可以看看这篇文章

基本原理:

首先打开 DDMS 捕捉界面元素

拿到resourceid,调用方法


List&amp;lt;AccessibilityNodeInfo&amp;gt; mListView = rootNode.findAccessibilityNodeInfosByViewI...]]></description><category></category></item><item><title><![CDATA[Android 微信聊天记录、联系人备份并导出为表格]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/84645647</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/84645647</guid><author>zk94_Android</author><pubDate>Fri, 30 Nov 2018 11:53:11 +0800</pubDate><description><![CDATA[Android 微信聊天记录、联系人备份并导出为表格

(github代码会及时更新,更完整的代码请参考末文的 github 链接)

最近公司要求做一个项目,实现备份和导出虚拟代表和医生的微信聊天记录的功能,于是想了一下可从以下两个方面入手,并分析了一下他们的优劣势

解密微信数据库,直接用 Sql 语句查询导表上传
	直接操作数据库,联系人和聊天记录完整,不会有遗漏
		相比自动化更加省...]]></description><category></category></item><item><title><![CDATA[try、catch、throw、throws、finally详解]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/82886736</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/82886736</guid><author>zk94_Android</author><pubDate>Fri, 28 Sep 2018 16:54:47 +0800</pubDate><description><![CDATA[一.关键字:throw,throws,try和catch的用法如下：

1、throws出现在方法的声明中，表示该方法可能会抛出的异常，允许throws后面跟着多个异常类型

2、throw出现在方法体中，用于抛出异常。当方法在执行过程中遇到异常情况时，将异常信息封装为异常对象，然后throw,告知用户。

3、try出现在方法体中，它自身是一个代码块，表示尝试执行代码块的语句。如果在执行过程中有...]]></description><category></category></item><item><title><![CDATA[Android_7.0 因为file://引起的FileUriExposedException异常]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/81019565</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/81019565</guid><author>zk94_Android</author><pubDate>Thu, 12 Jul 2018 17:38:16 +0800</pubDate><description><![CDATA[最近接手公司的apk更新迭代时发现每次下载完新版本跳转安装时apk就闪退查看log发现问题FileUriExposedException,原因是Android不再允许在app中把file://Uri暴露给其他app，包括但不局限于通过Intent或ClipData 等方法。因此提出一下解决方案:步骤一:在清单文件applicantion中添加如下代码:  &amp;lt;provider
        ...]]></description><category></category></item><item><title><![CDATA[Android_Android&H5的混合交互基础]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80690251</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80690251</guid><author>zk94_Android</author><pubDate>Thu, 14 Jun 2018 11:56:45 +0800</pubDate><description><![CDATA[最近新接手的项目几天熟悉下来发现原生的页面没几个,基本都是混合开发调用的H5,于是学习下android&amp;amp;H5的交互,方便日后维护和开发交互都是在webview中进行,所以要让weiview先支持js:  webViewSettings.setJavaScriptEnabled(true);一.JS调Android1.1 和H5开发人员沟通好调用方法名:mzys        2.2H5伪代...]]></description><category></category></item><item><title><![CDATA[Android_从创建项目开始学习MVP由入门到放弃]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80434200</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80434200</guid><author>zk94_Android</author><pubDate>Thu, 24 May 2018 17:37:19 +0800</pubDate><description><![CDATA[之前的项目一直使用mvc的模式编写,动不动一个Activity的代码就达到了成百上千行,每次改需求和BUG都需要上下滑从几百行代码里找到关键位置十分的难受+浪费时间.于是学习了一下MVP模式,解耦一下代码,方便后期的维护.一.回顾MVC    在MVC里，View是可以直接访问Model的！从而，View里会包含Model信息，不可避免的还要包括一些业务逻辑。1.M(Model)模型层    对数...]]></description><category></category></item><item><title><![CDATA[Kotlin_和Viewpager+Fragment的一个demo]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80392518</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80392518</guid><author>zk94_Android</author><pubDate>Mon, 21 May 2018 15:17:47 +0800</pubDate><description><![CDATA[主要实现了一个带指示器的Viewpager+Fragment第三方指示器的地址(使用demo)一.Indicator的依赖repositories {
    maven {
        url &quot;https://jitpack.io&quot;
    }
}

 compile 'com.github.hackware1993:MagicIndicator:1.3.1'二.主页布局&amp;lt;?xml ...]]></description><category></category></item><item><title><![CDATA[Kotlin_和RecyclerView的一个demo]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80365057</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80365057</guid><author>zk94_Android</author><pubDate>Fri, 18 May 2018 15:31:45 +0800</pubDate><description><![CDATA[Kotlin请求网络拿到数据后用RecyclerView显示的一个demo这是请求网络拿到数据的Demo本篇主要接上篇拿到数据后的展示一:拿到数据都给recycler设置布局管理器和adapter recyclerview.layoutManager = LinearLayoutManager(applicationContext)
 recyclerview.adapter = MyAdapte...]]></description><category></category></item><item><title><![CDATA[Kotlin_使用Retrofit和RxJava进行简单的网络请求与Gaon数据解析]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80312133</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80312133</guid><author>zk94_Android</author><pubDate>Mon, 14 May 2018 17:21:50 +0800</pubDate><description><![CDATA[不废话直接上代码在环境支持Kotlin的基础上添加如下依赖    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
   ...]]></description><category></category></item><item><title><![CDATA[Android_Recyclerview和ScrollView滚动到最底部失败的解决办法]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80238567</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80238567</guid><author>zk94_Android</author><pubDate>Tue, 08 May 2018 14:20:15 +0800</pubDate><description><![CDATA[最近的项目中遇到如下需求原告,被告,代理人分别对应三个recyclerview,每次点击栏目的加号时增加一个条目,并滚动到新增的条目的位置.布局如下:从上到下三个RecyclerView分别称之为rv_1,rv_2,rv_3,外层的scrollview称为sv_all理想中应该调用RecyclerView的smoothScrollToPosition(adapterYG.getItemCount(...]]></description><category></category></item><item><title><![CDATA[Android_ViewPager刷新但是页数和数据不变的问题]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80094216</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80094216</guid><author>zk94_Android</author><pubDate>Thu, 26 Apr 2018 15:12:42 +0800</pubDate><description><![CDATA[最近的项目中遇到了动态添加Viewpager中Fragment个数和更改单个Fragment中数据并刷新显示的需求,撸完代码发现两个功能都没有正常实现,各种百度和尝试之后发现问题:与ViewPager的adapter继承的pagerAdaper有关一般情况下都是继承 FragmentPagerAdapter ,只做了数据展示,无法实现刷新页数或者单页的数据需要改为FragmentStatePage...]]></description><category></category></item><item><title><![CDATA[Android_小米魅族测试时提示INSTALL_FAILED_USER_RESTRICTED错误的问题]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/80065116</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/80065116</guid><author>zk94_Android</author><pubDate>Tue, 24 Apr 2018 15:21:31 +0800</pubDate><description><![CDATA[小米手机安装AS的debug项目时提示如上问题,点击OK后仍无法安装.解决方法:1.(小米)打开开发者选项,开启USB调试和USB安装2.魅族 手机管家-&amp;gt;权限管理-&amp;gt;usb安装管理-&amp;gt;关闭3.小米手机测试最好插上一张电话卡,在红米5A上出现过不插电话卡无法安装调试app的情况...]]></description><category></category></item><item><title><![CDATA[Android_SqLite数据库的创建与使用]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79908704</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79908704</guid><author>zk94_Android</author><pubDate>Thu, 12 Apr 2018 10:29:03 +0800</pubDate><description><![CDATA[一:数据库的创建:DBHelperpublic class DBHelper extends SQLiteOpenHelper {

    private static final int VERSION = 1;
    private static String DB_NAME = &quot;_name.db&quot;;
   
    private String CREATE_TABLE_PERSONS...]]></description><category></category></item><item><title><![CDATA[Android_Okgo网络请求增加自定义的DialogCallBack]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79899451</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79899451</guid><author>zk94_Android</author><pubDate>Thu, 12 Apr 2018 09:54:00 +0800</pubDate><description><![CDATA[     发送网络请求时,可能因为网络较慢或上传文件较大,导致后台加载时间过长,为了优化用户体验,可以给用户一个网络正在请求的dialog提示.提示用户&quot;正在加载&quot;.但是每次请求网络都new 一个Dialog,并在网络请求的回调中去show 和dismiss显然代码太冗余,因此使用okgo时,可以自定义一个继承StringCallBack的DialogCallBack,在每次开始请求时提示用户,请...]]></description><category></category></item><item><title><![CDATA[Android_沉浸式状态栏]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79898007</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79898007</guid><author>zk94_Android</author><pubDate>Thu, 12 Apr 2018 09:53:43 +0800</pubDate><description><![CDATA[效果图   protected void chenjinshi() {
        if (Build.VERSION.SDK_INT &amp;gt;= 23) {
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREE...]]></description><category></category></item><item><title><![CDATA[Android_EditText输入字数限制与监听]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79897759</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79897759</guid><author>zk94_Android</author><pubDate>Thu, 12 Apr 2018 09:53:31 +0800</pubDate><description><![CDATA[   etSuggestion.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

          ...]]></description><category></category></item><item><title><![CDATA[Android_自定义样式全局Toast]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79900440</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79900440</guid><author>zk94_Android</author><pubDate>Thu, 12 Apr 2018 09:53:22 +0800</pubDate><description><![CDATA[Android自带的toast样式不太好看,UI妹子可能会自己设计一个全局的提示,如图:这时候就需要用到CustomView和toastUtil工具类了一 : customView:public class CustomToast extends Toast {

    TextView textView;
    /**
     * Construct an empty Toast obje...]]></description><category></category></item><item><title><![CDATA[Android_textView验证码倒计时]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79897677</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79897677</guid><author>zk94_Android</author><pubDate>Wed, 11 Apr 2018 15:41:32 +0800</pubDate><description><![CDATA[验证码获取成功后倒计时,并设置按钮不可点击                        import android.graphics.Color;
import android.os.CountDownTimer;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.st...]]></description><category></category></item><item><title><![CDATA[Android_EditText被输入法遮挡的解决办法]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79897181</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79897181</guid><author>zk94_Android</author><pubDate>Wed, 11 Apr 2018 15:27:35 +0800</pubDate><description><![CDATA[EditText如何在输入法弹出时自动滚动步骤一:        在清单文件的Activity加如下代码  &amp;lt;activity
            //显示软键盘,并让布局压缩
            android:windowSoftInputMode=&quot;stateVisible|adjustResize&quot;&amp;gt;
&amp;lt;/activity&amp;gt;步骤二:          在该A...]]></description><category></category></item><item><title><![CDATA[Android_CustomListview获取焦点返回上一个被选中条目(电视开发)]]></title><link>https://blog.youkuaiyun.com/zk94_Android/article/details/79897080</link><guid>https://blog.youkuaiyun.com/zk94_Android/article/details/79897080</guid><author>zk94_Android</author><pubDate>Wed, 11 Apr 2018 15:13:16 +0800</pubDate><description><![CDATA[
public class MemListView extends ListView {
	public MemListView(Context context) {
		super(context);
	}
	
	public MemListView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	pub...]]></description><category></category></item></channel></rss>