本文目录
- android API是什么
- android的sdk和api是什么意思
- 怎么查看android api
- android 的API如何使用
- Android之隐藏api介绍
- Android API 是什么东西
- android api 签名是什么意思
- Android API中被忽略的几个函数接口
- Java API 跟 Android API 区别和联系
- 如何使用android api
android API是什么
短信API(短信应用程序接口)其实是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。 API 同时也是一种中间件,为各种不同平台提供数据共享。
android的sdk和api是什么意思
SDK就是Kit,工具箱嘛,IOS平台上就是XCode,一系列的工具组合在一起,比如你在器里敲代码的时候它会自动补全代码,自动错误检查,你点一下Run,它会调用编译器来自动编译,编译完它会调用iPhone的模拟器来运行,这就是SDK,提供整套的开发工具供开发者使用。OpenAPI就是网站提供的接口,比如你想开发一个围脖的手机客户端,你从哪里读取数据写入数据呢?总不能从Web版里调用吧?那里是一堆一堆的html代码啊,所以OpenAPI就是网站提供的接口,供开发者接入用的,比如聚合数据平台。SDK (Software Development Kit)翻译成中文就是“软体开发工具组“是用来帮一个 产品 或 平台 开发应用程式的工具组,由产品的厂商提供给开发者使用的。通常是 某一家厂商 针对某一 平台 或 系统 或 硬体 所发布出来用以开发应用程式的工具组,在这个工具包里面,可能包含了各式各样的开发工具,模拟器等。例如:给 Android平台 使用的 Android SDK 就是用来开发 Android系统上面的应用程式。API (Application Programming Interface)翻译成中文就是“应用程式介面“,其实这样翻译不好,应该说是“程式沟通介面“。翻译为介面,顾名思义就要沟通两个不同的东西用的,通常由一组函式库所组成。在一个 同一个平台 下的 两个不同东西(程式 or 系统),为了能取用对方的功能等等,所以一个 X程式 写了一组函式,让 同一平台的其他程式 取用 X程式 的功能,那组函式就可以说是那个 X程式 对外开放的 API。例如:我要在 自己的网页 上加入 google map网页的功能,就使用 “google map API“有时候 SDK(开发者工具包) 里也会带有些许 API 用来调用一些系统平台程式提供的功能例如说:视窗显示,图形特效等等。以下举一个实际例子来说明,调用系统程式功能的API 是怎麽一回事开发Windows应用程式的SDK(开发者工具包) 里就包含 Win32 API说明: Win32 API 是一个函式库,可以给Windows应用程式 调用 Windows系统的功能在PTT看到有人问了差异性,我的看法是SDK是用来开发某一个平台的程式的工具包,API 是让同一平台下的程式取用它的功能的函式库。以及下面的评论1.API 通常大家都不会弄错,的确就是以功能为导向的“方法“或“函式“清单,看程式语言或平台而定( Methods, Functions... ),而每个 API 主要都是为了达成某特定功能所设计的。开发商可以为了不同平台,设计相同的 API 让开发者使用,也可能会因应不同平台,制作不同的 API 让开发者使用。2.当 API 数量够多功能够繁复并且可交互为用的时候,( 例如为了达成某些功能,常需要同时引用某些 APIs 来完成 )开发商就会为了开发便利,而预先撰写好一些组合好 APIs 的 API供开发者使用,来统一有特定需求的开发者能有一致的开发与使用体验,( 例如让使用“网路连线“的开发者不需自己处理网路的基础沟通信息,与错误处理方式,使 API 在应用的时候有一定程度的便利性等 )然后,也陆续发展出测试、除错工具,甚至是设计不同平台开发环境所需的套件,尤其针对不同平台,更是设计了对应的工具来协助开发、除错;SDK 名词之所以出现,俨然是为了汇整上述这些资源而诞生的,我想也可以说成是 API 的包含者(直接使用)与应用者(以便加速开发),也因此可以说这两个是属于不同层级的东西...
怎么查看android api
查看android api有两种方式:在线查看与离线查看。 1/reference/packages.html 目前最新的API是android 24,如下图,左边可以切换API的版本,右边可以切换显示包索引还是类索引。 2. 离线查看 离线查看一般是指在SDK Manager里下载开发者帮助文档如下图(最新的是Android 7,即API 24): 下载完成后,会显示Install状态。然后,进入SDK安装目录,打开名为docs的文件夹,接着在浏览器中打开index.html文件,这时可以在页面左边看到如下图的索引: 依次打开Develop--》Reference,然后就可以看到API文档了。这个docs几乎包含了开发者官网的全部内容,所以除了查看API,还可以查看官方教程等资源。 另外,虽说这是离线文档,但里面包含了谷歌字体服务和几个连接谷歌的脚本,所以打开时可能会很慢。解决方案是用一个器比如Notepad++,搜索各文件中包含的访问谷歌服务的网址字串,并将其替换为空串就可以了。
android 的API如何使用
看来你还连门都没入啊,用的java语言,如何调用api跟java一样的。还有想使用控件前,必须先找到他的id。比如:AutoCompleteTextView autocomplete = (AutoCompleteTextView) findViewById(R.id.autocomplete);想要使用就直接调用方法就可以了:autocomplete.settext(“aaa“);注意直接findViewById只能找本activity设置的布局文件中的控件,如果想要找其他的需要先找到布局文件再去找控件。
Android之隐藏api介绍
..
Android P 引入了针对非 SDK 接口(俗称为隐藏API)的使用限制。这是继 Android N上针对 NDK 中私有库的链接限制之后的又一次重大调整。
从今以后,不论是native层的NDK还是 Java层的SDK,我们只能使用Google提供的、公开的标准接口。这对开发者以及用户乃至整个Android生态,当然是一件好事。
但这也同时意味着Android上的各种黑科技有可能会逐渐走向消亡。
公共 SDK 接口是在 Android 框架软件包索引 中记录的那些接口
从 Android Pie 开始,对某些隐藏类、方法和字段的访问受到限制在 Pie 之前,通过简单地使用反射来使用这些隐藏的非 SDK 组件非常容易。
但是,现在当尝试访问时,面向 API 28 (Pie) 或更高版本的应用程序将遇到 ClassNotFoundException、NoSuchMethodError 或 NoSuchFieldException Activity#createDialog() 。
先来看看系统是如何实现这个限制的。
通过反射或者JNI访问非公开接口时会触发警告/异常等,那么不妨跟踪一下反射的流程,看看系统到底在哪一步做的限制。
先来看一下 java.lang.Class.getDeclaredMethod(String) :
其中看一下 ShouldBlockAccessToMember 的调用,如果它返回false,那么直接返回 nullptr ,上层就会抛 NoSuchMethodXXX 异常;也就触发系统的限制了。
源码如下:
继续跟踪下 GetMemberAction方法 :
继续跟踪GetMemberActionImpl方法:
其中调用到了
只要 IsExempted 方法返回 true,就算这个方法在黑名单中,依然会被放行然后允许被调用。
IsExempted 方法:
继续跟踪传递进来的参数 runtime-》GetHiddenApiExemptions() 发现也是 runtime 里面的一个参数.
这样就可以直接修改 hidden_api_exemptions_ 绕过去限制。
Java 层的,有一个对应的 VMRuntime.setHiddenApiExemptions 方法,通过 VMRuntime.setHiddenApiExemptions 设置下豁免条件,就能愉快滴使用反射了。
IsExempted 方法里面调用 DoesPrefixMatch 方法。DoesPrefixMatch是对方法签名进行前缀匹配。所有Java方法类的签名都是以 L 开头,这样就可以直接传个 L 进去,所有的隐藏API全部被赦免了!
另一种绕过 Android P以上非公开API限制的办法
Android API 是什么东西
API(Application Programming Interface)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。 其实早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将 AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在 Windows 中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。 ---------------------引用于TechWeb
android api 签名是什么意思
android api 签名是api调用的时候需要按照约定的参数生成一个字符串,对方接收到后校验参数,合法后接受请求并返回结果。所有android端的API的有效访问URL包括以下三个部分: 1. 资源访问路径,如/v1/deal/find_deals; 2. 请求参数:即API对应所需的参数名和参数值param=value,多个请求参数间用&连接 如deal_id=1-85462&appkey=00000; 3. 签名串,由签名算法生成 签名算法如下: 1. 对除appkey以外的所有请求参数进行字典升序排列; 2. 将以上排序后的参数表进行字符串连接,如key1value1key2value2key3value3...keyNvalueN; 3. 将app key作为前缀,将app secret作为后缀,对该字符串进行SHA-1计算,并转换成16进制编码; 4. 转换为全大写形式后即获得签名串 签名串获得后,将其作为sign参数附加到对应的URL中,即可正常访问API。 注意:请保证HTTP请求数据编码务必为UTF-8格式,URL也务必为UTF-8编码格式。参考代码:// 定义申请获得的appKey和appSecret String appkey = “XXXXXXXX“; String secret = “XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX“; String apiUrl = “http://api.dianping.com/v1/business/find_businesses“; // 创建参数表 Map《String, String》 paramMap = new HashMap《String, String》(); paramMap.put(“format“, “json“); paramMap.put(“city“, “上海“); paramMap.put(“latitude“, “31.21524“); paramMap.put(“longitude“, “121.420033“); paramMap.put(“category“, “美食“); paramMap.put(“region“, “长宁区“); paramMap.put(“limit“, “20“); paramMap.put(“radius“, “2000“); paramMap.put(“offset_type“, “0“); paramMap.put(“has_coupon“, “1“); paramMap.put(“has_deal“, “1“); paramMap.put(“keyword“, “泰国菜“); paramMap.put(“sort“, “7“); // 对参数名进行字典排序 String); Arrays.sort(keyArray); // 拼接有序的参数名-值串 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(appkey); for (String key : keyArray) { stringBuilder.append(key).append(paramMap.get(key)); } stringBuilder.append(secret); String codes = stringBuilder.toString(); // 字符串连接示例 // XXXXXXXXcategory美食city上海formatjsonhas_coupon1has_deal1keyword泰国菜latitude31.21524limit20longitude121.420033offset_type0radius2000region长宁区sort7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // SHA-1编码, 这里使用的是Apache codec,即可获得签名(shaHex()会首先将中文转换为UTF8编码然后进行sha1计算,使用其他的工具包请注意UTF8编码转换) /* * 以下sha1签名代码效果等同 * byte sha = org.apache.commons.codec.digest.DigestUtils.sha(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(codes)); * String sign = org.apache.commons.codec.binary.Hex.encodeHexString(sha).toUpperCase(); */ String sign = org.apache.commons.codec.digest.DigestUtils.shaHex(codes).toUpperCase(); //签名示例 //7D78381BC58E1DB1DBA4BD965916FE6B4D5DC892
Android API中被忽略的几个函数接口
1、Throwable接口中的getStackTrace()方法(或者Thread类的getStackTrace()方法),根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement;2、StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调试程序打印Log时非常有用;3、UncaughtExceptionHandler接口,再好的代码异常难免,利用此接口可以对未捕获的异常善后;使用参见:Android使用UncaughtExceptionHandler捕获全局异常4、Resources类中的getIdentifier(name, defType, defPackage)方法,根据资源名称获取其ID,做UI时经常用到;5、View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的(╯□╰);(谢评论提醒,这里面其实有一个坑:【android】view.isShown ()的用法)6、Arrays类中的一系列关于数组操作的工具方法:binarySearch(),asList(),equals(),sort(),toString(),copyOfRange()等;Collections类中的一系列关于集合操作的工具方法:sort(),reverse()等;7、android.text.format.Formatter类中formatFileSize(Context, long)方法,用来格式化文件Size(B → KB → MB → GB);8、android.media.ThumbnailUtils类,用来获取媒体(图片、视频)缩略图;9、String类中的format(String, Object...)方法,用来格式化strings.xml中的字符串(多谢 @droider An 提示:Context类中getString(int, Object... )方法用起来更加方便);10、View类中的三个方法:callOnClick(),performClick(),performLongClick(),用于触发View的点击事件;11、TextUtils类中的isEmpty(CharSequence)方法,判断字符串是否为null或““;12、TextView类中的append(CharSequence)方法,添加文本。一些特殊文本直接用+连接会变成String;13、View类中的getDrawingCache()等一系列方法,目前只知道可以用来截图;14、DecimalFormat类,用于字串格式化包括指定位数、百分数、科学计数法等;15、System类中的arraycopy(src, srcPos, dest, destPos, length)方法,用来copy数组;16、Fragment类中的onHiddenChanged(boolean)方法,使用FragmentTransaction中的hide(),show()时貌似Fragment的其它生命周期方法都不会被调用,太坑爹!17、Activity类中的onWindowFocusChanged(boolean),onNewIntent(intent)等回调方法;18、View类中的getLocationInWindow(int)方法,获取View在窗口/屏幕中的位置;19、TextView类中的setTransformationMethod(TransformationMethod)方法,可用来实现“显示密码”功能;20、TextWatcher接口,用来监听文本输入框内容的改变,可用来实现一系列具有特殊功能的文本输入框;21、View类中的setSelected(boolean)方法结合android:state_selected=““用来实现图片选中效果;22、Surface设置透明:SurfaceView.setZOrderOnTop(true);SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);但是会挡住其它控件;23、ListView或GridView类中的setFastScrollEnabled(boolean)方法,用来设置快速滚动滑块是否可见,当然前提是item够多;24、PageTransformer接口,用来自定义ViewPager页面切换动画,用setPageTransformer(boolean, PageTransformer)方法来进行设置;25、apache提供的一系列jar包:commons-lang.jar,commons-collections.jar,commons-beanutils.jar等,里面很多方法可能是你曾经用几十几百行代码实现过的,但是执行效率或许要差很多,比如:ArrayUtils,StringUtils……;26、AndroidTestCase类,Android单元测试,在AndroidStudio中使用非常方便;27、TextView类的setKeyListener(KeyListener)方法;其中DigitsKeyListener类,使用getInstance(String accepted)方法即可指定EditText可输入字符集;28、ActivityLifecycleCallbacks接口,用于在Application类中监听各Activity的状态变化;29、Context类中的createPackageContext(packageName, flags)方法,可用来获取指定包名应用程序的Context对象。
Java API 跟 Android API 区别和联系
Api只是一个统称,它是向上提供一系列的 接口,提供给开发者使用,而开发者不需要弄清楚实现方式,这样节省了开发时间。不管什么Api它们的作用是一样的。至于Api底层实现方式那就各不相同。由于Anroid中也是一部分java语言编写,你所说的Android API应该大部分也是java内容。两者之间,有很多相似的地方。不过很多新的Api是java里没有的。因为Android是针对移动设备,所以很多内容 java中没有。
如何使用android api
其实至于如何使用API可以根据个人习惯来定。今天我和大家分享我使用API的方法。具体还是来一个具体点的例子:使用