Android
抽烟的青蛙
这个作者很懒,什么都没留下…
展开
-
Retrofit2.0实践记录
前言 Type-safe HTTP client for Android and Java by Square, Inc.官网:http://square.github.io/retrofit/API:http://square.github.io/retrofit/2.x/retrofit/参考:http://gank.io/post/56e80c2c677659311bed9841原创 2016-05-06 18:50:50 · 4216 阅读 · 1 评论 -
android权限
转载自:http://blog.csdn.net/stephen255/article/details/9142923常用权限:读写存储卡装载和卸载文件系统android.permission.WRITE_EXTERNAL_STORAGEandroid.permission.READ_EXTERNAL_STORAGEandroid.permi转载 2015-08-14 16:44:41 · 442 阅读 · 0 评论 -
建立企业内部maven服务器并使用Android Studio发布公共项目
由于Android Studio使用了Gradle构建工具,在library依赖的处理上是将被依赖的library作为一个module引入(拥有一份完整的library拷贝),而Eclipse的ADT则是直接将library作为外部项目依赖链接进来,两者各有各的优缺点。Android Studio的好处是能时刻保持项目的完整性,每一个项目都包含了整个项目所需要的一切东西,当你把项目共享给别人的时候转载 2015-08-13 18:21:31 · 567 阅读 · 0 评论 -
Eclipse中关联第三方jar包
以v4包为例,记录一下三种关联第三方jar包的方法,首先你需要有第三方jar包的源码,才能关联,以v4包为例。到你的这个目录adt-bundle-windows-x86_64-20130729\sdk\extras\android\support\v4下看一下有没有src文件夹,这就是v4的源码,如果没有,可以在Android SDK Manager中下载Android Support Lib原创 2015-04-29 15:27:10 · 2196 阅读 · 0 评论 -
抓包工具Fidder详解(主要来抓取Android中app的请求)
第一步:下载神器Fiddler,下载链接:http://fiddler2.com/get-fiddler下载完成之后,傻瓜式的安装一下了!第二步:设置Fiddler打开Fiddler, Tools-> Fiddler Options (配置完后记得要重启Fiddler)选中"Decrpt HTTPS traffic", Fiddle转载 2015-04-16 16:34:42 · 692 阅读 · 0 评论 -
Android进程间通讯——AIDL
AIDL (Android Interface Definition Language) ,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。在使用AIDL前,必须要绑定service——bindService。使用AIDL的步骤:1.创建一个包名用来存放aidl文件,如果需要传递自定义对象,还需要建立对象原创 2015-03-09 18:59:50 · 718 阅读 · 0 评论 -
Android进程间通讯——AIDL,Messenger(信使),ContentProvider,Clipboard(剪切板)
今天逛论坛看到这么一个问题:android中同一个应用程序的activity和service属于同一个进程吗?回答什么的也有啊。在这里简单的记录一下。在Android系统中,每一个应用程序都是由一些Activity和Service组成的,一般Service运行在独立的进程中,而Activity有可能运行在同一个进程中,也有可能运行在不同的进程中。一般情况下,同一个应用程序的Activity组件原创 2015-03-09 17:06:11 · 753 阅读 · 0 评论 -
android 获取手机里面的WIFI密码
获取手机里面的WIFI密码??刚看到的时候我也没明白这个有什么用,自己的手机不会不知道wifi密码吧,所以到现在我也没用到个这个功能 ,在这里权当记录一下,以备以后再找。话说怎么获取WIFI密码还得从小米手机说起,记得小米推出了个Wifi密码共享的功能;比如在一个咖啡厅,只要一个人向服务员获取了密码,然后他打开wifi密码共享,那么其他人就可以直接连上wifi,而不需要再向服务员询问密码。但是原创 2015-03-11 11:03:45 · 3153 阅读 · 2 评论 -
Android进程间通讯——ContentProvider
ContentProvider是Android四大组件之一,可以提供数据给应用程序。ContentProvider可以提供数据在进程之间共享。ContentProvider能跨进程通信我是知道的。但是我就在之前的几天我还在认为ContentProvider只是为数据库服务的,还是和在和朋友的聊天中忽然提到了这个问题,我才知道ContentProvider不仅仅是查找数据库的数据。关于Content原创 2015-03-10 15:57:43 · 992 阅读 · 0 评论 -
Android新的menu实现——ActionMode
Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode。ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1。 Android 3.0以前,我们处理列表的长按事件经常使用Context Menu,An转载 2015-03-06 10:48:11 · 685 阅读 · 0 评论 -
Android进程间通讯——Messager(信使)
(一) 前言Messager n.信使,信差; 先驱; [军]通信兵,传令兵; 顾名思义,Messenger就像一个信使一样,可以负责双方的数据传递。当然如果只是单向传递的话一个Messager就可以了,如果需要双向传递的话那么肯定两个进程里面各有一个信使(一个人怎么通信呢?对不对)。其实Messager实现IPC通信,底层也是使用了AIDL方式。思想:在进程A中创建一个Messa原创 2015-03-10 09:57:15 · 2582 阅读 · 0 评论 -
Android插件实例——360 DroidPlugin详解
Android插件实例——360 DroidPlugin详解支持Androd 2.3以上系统插件APK完全不需做任何修改,可以独立安装运行、也可以做插件运行。要以插件模式运行某个APK,你无需重新编译、无需知道其源码插件的四大组件完全不需要在Host程序中注册,支持Service、Activity、BroadcastReceiver、ContentProvider四大组件插件之间、Host程转载 2015-09-02 17:53:43 · 5006 阅读 · 1 评论 -
Dagger2使用
概述依赖注入(Dependency Injection),简称DI,又叫控制反转(Inversion of Control),简称IOC。Dagger2就是DI框架的一个例子。作用将各层的对象以松耦合的方式组织在一起,解耦,各层对象的调用完全面向接口。提供依赖的两种方式使用@Inject注解构造器class Thermosiphon implements Pump { private fin原创 2017-08-17 15:24:57 · 344 阅读 · 0 评论 -
Android动态加载—so文件
简介前几天做一个视频播放的功能,用到了bilibili开源ijkplayer播放器的(集成ijkplayer),功能确实强大,但就是用到的ffmpeg解码库太大,不得已只能只能将so文件拿出来,通过动态的方式来加载。什么是动态加载?就是讲so文件不打包进apk,在安装完应用打开app的时候通过后台下载so库,将下载下来的so文件再写入到app里面。 首先我们要知道,Android加载so文件的方式原创 2016-04-05 17:18:01 · 20081 阅读 · 4 评论 -
compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择
compileSdkVersion指定apk编译时的用的哪个 Android SDK 版本, compileSdkVersion 不会改变apk运行时的行为,不会被编译到 APK 中:它只是在编译的时候使用。minSdkVersionapk只能运行在版本>=minSdkVersion的Android手机上,其中v4和v7包的 minSdkVersion 分别是 4和7 ,也就是说v4包只能在API原创 2016-11-21 16:55:47 · 685 阅读 · 0 评论 -
Android利用ProGuard进行代码混淆
简介由于Android的代码大都是Java代码,所以挺容易被反编译的,好在Android ADT为我们集成了混淆代码的工具,一来可以混淆我们的代码,让程序被反编译后基本看不懂,另外还能起到代码优化的作用。发布项目前,建议打开Android的代码混淆功能。Android ADT主要通过ProGuard工具来提供代码混淆,网上也有挺多博客文章讲这个的,但感觉很多都介绍得太过于复杂,这里我就以问答的方式来原创 2016-12-29 11:58:31 · 468 阅读 · 0 评论 -
Canvas 基本绘图Api记录
简介Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础。绘制东西,需要4个元素协同来完成:位图:Bitmap 来保持(hold)那些像素画布:Canvas 来响应draw的调用画笔:paint 描述画画的颜色和样式等绘图基元:矩形、路径、文字、位图等其他元素ApidrawColor / drawRGB / drawARGB(绘制颜色) /** * 使用原创 2016-11-28 18:27:50 · 748 阅读 · 0 评论 -
Android drawable不同分辨率下的适配
前言文章基本抄袭郭霖大神的Android drawable微技巧,你所不知道的drawable的那些细节,略做修改,为了自己理解。简介最近做项目的时候遇到一个问题:图片在手机上的显示总是和效果图有差异,UI说是我把图片放大了,看了一下代码没有啊,这是怎么回事?最后发现是把基于1080*1920分辨率下切的图片放到了mipmap-xhdpi目录下面说明 public static Bitmap dec原创 2016-10-18 12:48:51 · 1705 阅读 · 0 评论 -
JNI实现HelloWorld
简介jni实现hello world,以及生成so文件的步骤介绍下载NDK并解压配置NDK的环境变量配置生成头文件.h配置build ndk 步骤下载安装ndk就不说了,网上有很多教程,说一下.h文件和.so文件的生成步骤生成.h头文件点击External Tools Configurations… 然后,如图所示,点击 接下来,看图操作 最后点击Apply,然后 我们在一个androi转载 2016-04-26 18:12:23 · 912 阅读 · 0 评论 -
Android Studio生成.so库
简介通过android studio生成so库的实践。上一篇记录的是通过eclipse生成so的方法eclipse生成so库实践,这里记录一下通过android studio是怎么生成so库的,参考文章http://www.jianshu.com/p/0c0d37c9a2db,这篇blog主要是参考上面文章实现,自己做了一部分修改,以及实现时遇到了一些坑,这里记录一下。配置NDK下载ndk原创 2016-05-03 20:45:57 · 11621 阅读 · 4 评论 -
Android动态加载—Res文件
简介动态加载res文件,就是将资源文件打包进一个统一的apk,而在我们的app安装后通过后台下载,然后再写到我们的应用中,将这个含有资源的apk,可以称为插件apk,而我们的app,可以称为宿主apk,在宿主中加载插件中的资源文件的方法。介绍下载加载获取资源文件对于下载可以参考上一篇so文件的下载,没什么要说的,加载是从你的sdcard目录下复制到你的应用目录下例如:data/data/包名原创 2016-04-05 21:33:14 · 6481 阅读 · 0 评论 -
IllegalThreadStateException: Thread already started解决
IllegalThreadStateException的原因解析mThread = new MThread();mThread.start();mThread.interrupt();mThread.start();这段代码运行,就会出现上面的异常,从字面是理解也很容易理解:非法线程状态异常,线程已经start。具体原因也很容易找到,看一下thread.start()里面做了什么: pu原创 2016-04-05 15:26:05 · 6675 阅读 · 1 评论 -
记录一些比较好的网站(持续)
查看android源码:http://androidxref.com/原创 2014-10-07 14:44:44 · 1184 阅读 · 0 评论 -
Android进程间通讯——Clipboard(剪切板)
剪贴板的含义也很好理解,就是一个进程在剪贴板里面复制了一条数据,然后另外一个进程再调用粘贴方法,把数据取出来。进程A的代码:public class ClipboardOneActivity extends Activity { private Button mBtnWriteClipBoard; @Override protected void onCreate(Bundle s原创 2015-03-10 15:45:17 · 616 阅读 · 0 评论 -
ContentProvider浅析---写点你平时没注意到的~~
(一) 前言ContentProvider是android组件之一,可以提供数据的跨应用程序访问,提供数据的跨进程无缝隙访问,所以是非常重要的东东。使用方法一般是复制内容到剪贴板代码:getContentResolver().query(Uri uri, String[] projection, String selection, String[] selectionArgs, S转载 2015-03-05 20:28:17 · 503 阅读 · 0 评论 -
如何一个android工程作为另外一个android工程的lib
在实际使用中,我们可能会把一个android工程作为库,然后在另外一个android的工程中引用。实现的步骤如下:1.将android工程设为库选择工程右击选择“property”->"Android"选项下的library勾选“Is Library”。2.在当前工程引用上面的工程的库在当前工程目录下的文件“project.properties”里添加:an转载 2014-08-18 09:30:12 · 519 阅读 · 0 评论 -
判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续
项目中遇到一个问题,就是用到downloadmanager原创 2014-08-25 15:56:43 · 3176 阅读 · 0 评论 -
Android中获取应用程序(包)的信息-----PackageManager的使用(一)
转载请注明出处:http://blog.csdn.net/qinjuning转载 2014-08-29 16:41:32 · 523 阅读 · 0 评论 -
Android URI简介
就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:scheme://host:port/path举个实际的例子:content://com.example.project:200/folder/subfolder/etc\---------/ \-------------转载 2014-08-12 10:58:28 · 1158 阅读 · 0 评论 -
Android开发教程:数据存取之SQLite浅析
一.SQLite的介绍1.SQLite简介SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,转载 2014-08-21 10:20:26 · 629 阅读 · 0 评论 -
Android自定义属性时format
自己的理解arrts.xml原创 2014-07-22 17:04:41 · 878 阅读 · 0 评论 -
Android中的软引用(SoftRefrerence)和弱引用(WeakReference)
在Android开发中,基本上很少有用到软引用或弱引用,这两个东东若用的很好,对自己开发的代码质量的提高有很大的帮助。若用的不好,会坑了自己。所以,在还没有真正的去了解它们之前,还是慎用比较好。 下面将通过两个Demo来结识软引用和弱引用在开发中的运用。 一. WeakReference:防止内存泄漏,要保证内存被虚拟机回收。 下面以一个时间更新的De转载 2014-07-02 17:52:32 · 759 阅读 · 0 评论 -
String转换成资源id以及String id转换成字符串,两者间的转换
1,将Android中xml文件中有的字符串,原创 2014-06-12 13:53:14 · 10513 阅读 · 0 评论 -
Android动态设置控件的宽度和高度
LayoutParams lp=linearLayout.getLayoutParams();lp.height=screenHeight*7/11;linearLayout.setLayoutParams(lp);原创 2014-06-11 15:18:10 · 1441 阅读 · 0 评论 -
Android DOM解析
public boolean parseConfigXml() { boolean rst = false; int count = 0; int i; UiStoreIcon v = null; FileInputStream fin = null; InputStream is = null; DocumentBuilderFactory factory = nul原创 2014-06-30 13:54:36 · 780 阅读 · 0 评论 -
Notification framework层的处理流程分析
相关文件:framework/base/core/java/android/app/NotificationManager.javaframework/base/services/java/com/android/server/NotificationManagerService.java{@hide} extends INotificationManager.Stubfr转载 2014-10-07 14:40:06 · 745 阅读 · 0 评论 -
android view的一些常用触发方法
onFinishInflate() 当View中所有的子控件 均被映射成xml后触发onMeasure(int, int) 确定所有子元素的大小onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发onSizeChanged(int, int, int, int) 当view的大小发生变化时触发onD转载 2015-01-14 10:34:17 · 576 阅读 · 0 评论 -
在命令行中通过adb shell am broadcast发送广播通知以及Android的常用adb命令
转载自:http://www.cnblogs.com/622698abc/archive/2013/06/11/3132306.html?utm_source=tuicool通过命令行执行adb shell am broadcast发送广播通知。 adb shell am broadcast 后面的参数有:[-a ][-d ][-t ] [-c [-c转载 2015-01-28 10:30:37 · 3933 阅读 · 0 评论 -
FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我调用 notifyDataSetChang转载 2014-11-04 09:42:46 · 563 阅读 · 0 评论 -
Android-- FragmentStatePagerAdapter分页
ViewPagerViewPager 如其名所述,是负责翻页的一个 View。准确说是一个 ViewGroup,包含多个 View 页,在手指横向滑动屏幕时,其负责对 View 进行切换。为了生成这些 View 页,需要提供一个 PagerAdapter 来进行和数据绑定以及生成最终的 View 页。setAdapter()ViewPager 通过 se转载 2014-10-16 18:40:28 · 472 阅读 · 0 评论