分类: [Android]

结合HierarchyViewer和APK文件反编译获得APP元素id值

我在HierarchyViewer中查看“发布”这个View,HierarchyViewer显示了一个@414a54c8和id/flipper_head_action。注意:@后加一串16进制数并不是这个view的id,而只是一个对我们人类没有任何意义的指针值。 但是我们有这个元素的id名flipper_head_action。我们需要按图索骥,按这个id名找到对应的数值。 解决步骤: 1.下载反编译器dex2jar,和一个java源代码查看器jd-gui 下载地址: https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.13.zip&can=2&q= https://code.google.com/p/innlab/downloads/det ......

如何在Eclipse中编译hierarchy viewer (基于Windows)

首先,你要保证你的手机能够开启View Server,具体见http://maider.blog.sohu.com/255448342.html 按照http://uiuno.com/2017/09/26/a114401/里的步骤操作即可将hierarchyviewer2的源码导入Eclipse并运行. 2013.3.15更新:在android源码android-4.2.2_r1分支之前,hierarchyviewer2的源码位于 SOURCE_ROOT/sdk/hierarchyviewer2文件夹内,而在android-4.2.2_r1分支之后的源代码,hierarchyviewer2的源码移至了SOURCE_ROOT/tools/swt/hierarchyviewer2文件夹内.本篇文章后续内容按照android-4.2.2_r1分支之前的代码结构讲解。而若 ......

如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接

前期准备: 关于什么是Hierarchy Viewer,请查看官方文档:http://developer.android.com/tools/debugging/debugging-ui.html。个人理解:Hierarchy Viewer能获得当前手机实时的UI信息,给界面设计人员和自动化测试人员带来极大的便利。 在Android的官方文档中提到: To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system. 即:出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0且ro.debuggable等于1的an ......

Android获取真正准确的分辨率的不同方式,区分Android版本

文章摘至:http://blog.csdn.net/tc839706407/article/details/50906962 最近因为android设备分辨率的问题被坑惨了,另一方面,公司的美术团队被我也坑惨了,虽然看起来问题不在我,但是这个锅该我来背,毕竟测试分辨率的代码是我写的。网上到处流传的都是各种getMetrics()方法,我也深信这种方法是对的,用了3种大体相同细节不同的方法来测,都得到同一个结果1280×672,dpi 160,看起来很不顺眼是吧,我也觉得,而且在刷系统之前测得的分辨率是864×480 dpi 120 ,2中分辨率的比例也变了。虽然觉得奇怪,但是大家都没有 ......

android:configChanges属性总结

android中的组件Activity在manifest.xml文件中可以指定参数android:ConfigChanges,用于捕获手机状态的改变。 在Activity中添加了android:configChanges属性,在当所指定属性(Configuration Changes)发生改变时,通知程序调用onConfigurationChanged()函数。 设置方法:将下列字段用“|”符号分隔开,例如:“locale|navigation|orientation”   “mcc“ 移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。 “mnc“ 移动网号,在一个国家或者地区中,用于区分手机用户的服务商。 “locale“ 所在地 ......

Android scheme呼起App

Android应用/组件间通信有一种方式是intent,应用可以注册intent filter声明自己对什么样的intent感兴趣,其它应用发送intent时通过系统级广播传递过来,如果与预先注册的intent filter匹配,应用将收到该intent(无论应用是否正在运行,都会被“唤醒”,也就是隐式启动Activity),取出intent携带的数据,做进一步处理 就是这样,通过系统广播拿到一次起来的机会,例如在manifest里静态注册intent filter声明自定义scheme: <activity android:name=".MainActivity"> <intent-filter> <action android ......

Android 主流App应用市场

百度:http://app.baidu.com
小米:http://dev.xiaomi.com/console/
vivo:http://dev.vivo.com.cn
360:http://dev.360.cn/
应用宝:http://open.qq.com
华为:http://developer.huawei.com/
oppo:http://open.oppomobile.com/newuser/login
魅族:http://open.flyme.cn/?t=1489458048989
pp助手、豌豆荚(合为阿里分发):http://open.uc.cn/notice
联想乐商店:http://open.lenovo.com/developer/
乐视商店:http://open.le.com/dev-web/
搜狗开发者:http://zhushou.sogou.com/open/
应用汇:http://dev.appchina.com/dev/index

彻底解决Android 应用方法数不能超过65K的问题

尊重原创 :http://blog.csdn.NET/yuanzeyao/article/details/41809423 参考文章:实现Android 动态加载APK(Fragment or Activity实现) 作为一名Android开发者,相信你对android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们只需要在Project.proterty中配置一句话就Ok啦, dex.force.jumbo=true 是的,加入了这句话,确实可以让你的 ......

Android 生成Keystone,对Apk进行二次签名

一、创建Keystone 方式一:运行bat CreateKeystone 方式二:执行java package com.uiuno.createkeystone; import java.io.File; import java.io.IOException; public class CreateKeystone { private static String keystore = "G:\\pdragon_tools\\CreateKeystone\\debug.keystore"; //keystone名称 private static String alias = "debug.keystore"; //keystone别名 private static String storepass = "uiunopl"; //密码 private static String keypass = "uiunopl"; //密码 private static String ke ......

Android拍照并获取图片

一:拍照后在Activity的函数中处理bitmap,此时图片需要自己保存到指定路径 protected void getImageFromCamera() { String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(getImageByCamera, REQUEST_CODE_CAPTURE_CAMEIA); } else { Toast.makeText(getApplicationContext(), " ......

Android全面屏适配

Galaxy S8及S8+分别搭载“5.8”与“6.2”大屏,高达84%的屏幕占比为Galaxy S8及S8+在游戏娱乐、观看视频时带来深度沉浸式视觉体验。但是与此同时S8却有着一个奇葩的屏幕比例:18.5比9,屏幕分辨率:2960×1440。通常我们在开发过程中android的标准设计图为1920×1080,ios为1334×750,默认采用16比9的比例来设计效果图。android机型众多,分辨率千奇百怪,这回三星又来添乱了,实际开发过程中还真遇到了三星S8的适配问题。 先来看一些案例: 这是适配前的王者农药 作者:尹star 链接:http://www.jianshu.com/p/defcf4f29a12 來源:简书 ......

Android Studio 入门级教程(三):gradle项目构建

【系列】 Android Studio 入门级教程(一) Android Studio 入门级教程(二):新建一个属于自己的工程并安装Genymotion模拟器 Android Studio 入门级教程(三):gradle项目构建   目录: 1、gradle的概念 2、gradle配置jar包,和libs文件夹导入jar包的区别 3、签名打包: (1)Studio (2)命令行 (3)gradle wrapper的原理 4、BuildConfig的使用 5、简单介绍module中build.gradle文件参数含义   一、gradle的概念: gradle是一个构建工具 gradle是以Groovy语言为基础的 gradle主要面向的是Java语言 打开Androi ......

Android Studio 入门级教程(二):新建一个属于自己的工程并安装Genymotion模拟器

【系列】 Android Studio 入门级教程(一) Android Studio 入门级教程(二):新建一个属于自己的工程并安装Genymotion模拟器 Android Studio 入门级教程(三):gradle项目构建   正文 都说了放假不休息,奏是这么任性!!! 【开发环境】 物理机版本:Win7旗舰版(64位) Android Studio版本:1.1正式版 一、新建工程: 1、新建一个Project: 打开Android Studio,新建一个Project,界面如下: 上图中,设置好工程名和路径之后,接下来可以一路next: 二、Android Studio使用方法; 1、修改项目结构视图: Project新 ......

Android Studio 入门级教程(一)

【系列】 Android Studio 入门级教程(一) Android Studio 入门级教程(二):新建一个属于自己的工程并安装Genymotion模拟器 Android Studio 入门级教程(三):gradle项目构建   前言 最近网上流行起了程序猿鼓励师的段子,鼓励师的报酬比程序猿还高,想想也确实是个不错的职位,什么?你没听说过?翻到本文最后面,爆图。 之前写一篇博客:使用Android Studio搭建Android集成开发环境(图文教程),之前的那篇可以凑合着看一下。当时Andriod Studio还处在测试版,现在Android Studio已经升级到稳定版了,决定还是重新写一 ......

Android 获取虚拟按键的高度

public class ScreenUtils { //获取虚拟按键的高度 public static int getNavigationBarHeight(Context context) { int result = 0; if (hasNavBar(context)) { Resources res = context.getResources(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId > 0) { result = res.getDimensionPixelSize(resourceId); } } return result; } /** ......

移动端html广告处理差异

移动端html广告处理差异,由于广告商可以在pc端投入也可能在移动端投入广告,广告商为了一个广告多平台重用,都会选择试用html广告来处理自家广告投放。 以下是集成广告时广告平台处理html广告的展示上报时机。 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ 广告平台 Html上报时机 ......

常用App包名


QQ
1.大众版(国内版):

com.tencent.mobileqq

2.国际版:

com.tencent.mobileqqi

3.轻聊版:

com.tencent.qqlite


微信:

com.tencent.mm


新浪微博:

com.sina.weibo


FaceBook:

com.facebook.katana


Twitter:

com.twitter.android


Line
1. 日文版:

jp.naver.line.android

2.LINE Lite:

com.linecorp.linelite


 

Android Bitmap,byte[],Drawable,InputStream相互转化

1 在surfaceview中结合Camera获取到摄像头图像,这段代码是我程序中的一部分 @Override public void onPreviewFrame(final byte[] data, Camera camera) { camera.setPreviewCallback(null); if (mCamera == null) return; Camera.Parameters parameters = camera.getParameters(); int width = parameters.getPreviewSize().width; int height = parameters.getPreviewSize().height; YuvImage yuv = new YuvImage(data, parameters.getPre ......

Android的消息循环机制 Looper Handler类分析 

Android的消息循环机制 Looper Handler类分析   Looper类说明    Looper 类用来为一个线程跑一个消息循环。 线程在默认情况下是没有消息循环与之关联的,Thread类在run()方法中的内容执行完之后就退出了,即线程做完自己的工作之后就结束了,没有循环的概念。 调用Looper类的 prepare() 方法可以为当前线程创建一个消息循环,调用loop() 方法使之处理信息,直到循环结束。 大多数和消息循环的交互是通过 Handler 类进行的。 下面是一个典型的实现: class LooperThread extends Thread { public Handler mHandle ......

Andriod获取手机App信息(区分系统App,获取签名)

  主界面获取列表,其中需要判断App是否为用户App,代码如下 /** * 判断是否为用户APP * * @param info * @return */ public static boolean isUesrApp(ApplicationInfo info) { if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { // 代表的是系统的应用,但是被用户升级了. 用户应用 return true; } else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { // 代表的用户的应用 return true; } return false; } 点击详情之后会获 ......