android中api
⑴ android API是什么
短信API(短信应用程序接口)其实是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。 API 同时也是一种中间件,为各种不同平台提供数据共享。
⑵ 如何使用Android调用百度地图API
一、申请密钥
1、先用eclipse创建一个Android工程
2、在网络api官网上申请一个密钥,链接:http://lbsyun..com/apiconsole/key
二、工程配置
1、将mapapi_vX_X_X.jar拷贝到工程libs目录下,将libBaiMapSDK_vX_X_X.so拷贝到libs\armeabi
目录下,拷贝完成后,如下所示:
注:liblocSDK3.so和locSDK_3.1.jar为网络定位SDK所使用资源,开发者可根据实际需求自行添加。
2、右键工程属性,在Libraries中选择“Add External JARs”,选择mapapi_vX_X_X.jar,确定返回
配置好以上步骤,即可使用网络地图了
三、显示网络地图
1、在android配置清单文件中AndroidManifest.xml添加开发密钥和所需权限
<application> <meta-data android:name="com..lbsapi.API_KEY" android:value="开发者 key" /> </application>
所需权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 2、在xml布局中添加地图控件
<com..mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
?3、在应用程序创建时初始化,SDK引用的全局变量Context
注意:在SDK各功能组件使用之前都需要调用
SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //在使用SDK各组件之前初始化context信息,传入ApplicationContext SDKInitializer.initialize(getApplicationContext()); System.out.println("SDKInitializer一初始化"); } }
设置自定义的application为默认应用 <application android:name="com.bao.ah.MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 //SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); } }
4、网络地图应和Activity生命周期绑定
public class MainActivity extends Activity { MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 //SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } }
⑶ Android app API环境切换需求与实现
鉴于app在打包debug ,release, dev 等环境的时候,请求后天api接口的服务器地址不一样.导致测试可能频繁的问你要不同环境的测试apk包.
当工程大到一定程度的时候,gradle打包特别的慢.即使你自己有优化过,而且测试嫌麻烦,开发也觉得麻烦.
api地址变化的应该就基地址,全部变化也有办法处理.这里把基地址用一个 public static 的 String Url 变量去装载.
1:默认 Url 地址使用release的地址.
2:release版本的apk 按照需求,启动app调转到splash界面.debug版本的apk 跳转到api选择界面,当选择好api环境后,在调转到原splash界面.
3:选择api环境的时候,去修改 这个被public static 修饰的Url
1:修改被public static 修饰的String 不是问题.
2:根据不同apk版本启动不同的界面.这个是一个问题,之前没处理过类似的需求.好在google 有提供一种解决思路 饺子 manifest merge ( 合并多个清单文件 ),就是根据这个合并算法去解决这个问题.
创建debug文件夹,新建的项目一般会有3个文件夹,一个是默认类型,一个test 类型,一个Android test类型,这里我们在创建一个debug类型的.
xml文件合并可以合并java 文件,和 资源文件.
我们这里定要创建manifest文件,这是算法配置的核心,配置就是在这里设置的,其次还有资源文件.
注意创建的时候文件格式应该和main类型的保持一致,可以将as切换到android模式下检查.
我们这里添加了一个EnvChangeActivity 和对应的布局文件.
这里我们想修改启动的界面为EnvChangeActivity.所以我们要替换点原main类型下的manifest文件中的配置.
如上设置就会把原Mainactivity中的配置全部替换成当前manifest文件中的配置.后面我们在解释这些配置.这里将EnvChangeActivity设置成了启动界面.所以完成了修改启动界面的功能.
创建一个java配置文件
可以不创在main类型下面.
在EnvChangeActivity中修改地址就好了.修改完之后在跳转到MainActivity.就原逻辑保持一致了
到这里需求的就已经说明完了.
接下来就说明合并的算法,在我们使用gradle编译打包的时候,合并工具会自动帮我们合并.
合并工具根据每个清单文件的优先级将所有清单文件按顺序合并到一个文件中。 例如,如果您有 3 个清单文件,则会先将优先级最低的清单合并到优先级第 2 高的清单中,然后再将合并后的清单合并到优先级最高的清单中
2应用模块的主清单文件
3所包括库中的清单文件 如果您有多个库,则其清单优先级与依赖顺序(库出现在 Gradle dependencies
块中的顺序)匹配。
合并工具可以在逻辑上将一个清单中的每个 XML 元素与另一个清单中的对应元素相匹配。
如果优先级较低的清单中的元素与优先级较高的清单中的任何元素均不匹配,则该元素将被添加至合并清单。 但是,如果有匹配元素,则合并工具会尝试将其中的所有属性合并到相同元素中。如果工具发现两个清单包含相同属性,但值不相同,则会出现合并冲突。
绝不会在清单之间匹配 <intent-filter>
元素。 每个元素都被视为唯一元素,并添加至合并清单中的常用父元素。
合并规则标记是一个 XML 属性,可用于表达您对关于如何解决合并冲突或删除不需要的元素和属性的首选项。 您可以对整个元素或只对元素中的特定属性应用标记。
合并两个清单文件时,合并工具会在高优先级清单文件中寻找这些标记。
所有标记均属于 Android tools 命名空间,因此您必须先在 <manifest> 元素中声明此命名空间,如下文所示:
要向整个 XML 元素(给定清单元素中的所有元素及其所有子标记)应用合并规则,请使用以下属性:
如果使用合并冲突启发式算法时没有冲突,则合并此标记中的所有属性以及所有嵌套元素。 这是元素的默认行为。
低优先级清单
高优先级清单
合并结果
低优先级清单
高优先级清单
合并结果
完全替换低优先级元素。 也就是说,如果低优先级清单中有匹配元素,请将其忽略并完全按照其在此清单中显示样子来使用该元素。
低优先级清单
高优先级清单
合并结果
其他的自己看下官网,上面的解释也是我搬过来的.
官方解释
拙劣的dome,可以瞅瞅.
Demo地址
⑷ 利用 Android 系统原生 API 实现分享功能(2)
在之前的一篇文章 利用 Android 系统原生 API 实现分享功能 中主要说了下实现流程,但具体实施起来其实还是有许多坑要面对。那这篇文章就是提供一个封装好的 Share2 库供大家参考。
GitHub 项目地址:Share2
看过上一篇文章的同学应该知道,要调用 Android 系统内建的分享功能,主要有三步流程:
更多相关内容请参考上一篇,这里就不再重复赘述了。
知道大致的实现流程后,其实只要解决下面几个问题后就可以具体实施了。
这其实是直接决定了最终的实现形态,我们知道常见的使用场景中,只是为了在应用间分享图片和一些文件,那对于那些只是分享文本的产品而言,两者实现起来要考虑的问题完全不同。
所以为了解决这个问题,我们可以预先定好支持的分享内容类型,针对不同类型可以进行不同的处理。
在 Share2 中,一共定义了5种类别的分享内容,基本能覆盖常见的使用场景。在调用分享接口时可以直接指定内容类型,比如像文本、图片、音视频、已经其他各种类型文件。
对于不同类别的内容,可能会有不同的来源。比如文本可能就只是一个字符串对象,而对于分享图片或其他文件,我们需要一个 Uri 来标识一个资源。这其实就引出来具体实施时的一个大问题,如何获取要分享文件的 Uri,并且这个 Uri 要能被接收分享内容的应用处理才行 。
那么,如何获取要分享内容文件的 Uri?如果处理才能让接收方也能够根据 Uri 获取到文件?
我们把文件 Uri 的来源划分为下面三种类型:
常见场景 :通过文件选择器获取一个文件的 Uri
通过这种方式获取到的 Uri 是由系统 ContentProvider 返回的,在 Android 4.4 之前的版本和之后的版本有较大的区别,我们后面再说怎么处理。只要先记住这种系统返回给我们的 Uri 就行了。
比如调用系统相机进行拍照或录制音视频,要传入一个生成目标文件的 Uri ,从 7.0 开始我们需要用到 FileProvider 来实现。
如果用到了 FileProvider 就要注意跟系统 ContentProvider 返回 Uri 的区别,比如我们在 Manifest 中对 FileProvider 配置 android:authorities="com.xx.xxx.fileProvider" 属性,那这时系统返回的 Uri 格式就变成了 : content://com.xx.xxx.fileProvider... ,对于这种类型的 Uri 我们姑且叫 自定义 FileProvider 返回的 Uri ,后面一并说怎么处理。
我们调用 new File 时需要传入指定的文件路径,这个绝对路径通常是: /storage/emulated/0/... 这种样式,我们要想调用分享时也要变成 Uri 的形式才可以,那么如何把文件路径变成一个文件 Uri ?这个问题下面也一并进行回答。
前面提到了文件 Uri 的三种分类,对应不同类型处理方式也不同,不然你最先遇到的问题就是:
这是由于对系统返回的 Uri 缺失访问权限导致,所以要对应用进行临时访问 Uri 的授权才行,不然会提示权限缺失。
对于要分享系统返回的 Uri 我们可以这样进行处理:
需要注意的是对于自定义 FileProvider 返回 Uri 的处理,即使是设置临时访问权限,但是分享到第三方应用也会无法识别该 Uri
典型的场景就是,我们如果把自定义 FileProvider 的返回的 Uri 设置分享到微信或 QQ 之类的第三方应用,会提示文件不存在,这是因为他们无法识别该 Uri。
关于这个问题的处理其实跟下面要说的把文件路径变成系统返回的 Uri 一样,我们只需要把自定义 FileProvider 返回的 Uri 变成第三方应用可以识别系统返回的 Uri 就行了。
创建 FileProvider 时需要传入一个 File 对象,所以直接可以知道文件路径,那就把问题都转换成了: 如何通过文件路径获取系统返回的 Uri
下面是根据传入的 File 对象和类型来查询系统 ContentProvider 来获取相应的 Uri,已经按照不同文件类型在不同系统版本下的进行了适配。
其中 forceGetFileUri 方法是通过反射实现的,处理 7.0 以上系统的特殊情况下的兼容性,一般情况下不会调用到。Android 7.0 开始不允许 file:// Uri 的方式在不同的 App 间共享文件,但是如果换成 FileProvider 的方式依然是无效的,我们可以通过反射把该检测干掉。
通过 File Path 转成 Uri 的方式,我们最终统一了调用系统分享时传入内容 Uri 的三种不同场景,最终全部转换为传递系统返回的 Uri,让第三方应用能够正常的获取到分享内容。
Share2 按照上述方法进行了具体实施,可以通过下面的方式进行集成:
分享图片到指定界面,比如分享到微信朋友圈
GitHub 项目地址:Share2
⑸ 开发android应用需要哪些api
API 级别是一个整数值,它唯一标识了某版本 Android 平台所提供的 API 的版本。
Android 平台提供了一整套 API,应用程序可以用这些 API 与底层系统进行交互。 这套API由以下部分组成:
核心包和类
Manifest 文件中使用的 XML 格式的元素和属性声明
声明和访问资源时所用的 XML 格式的元素和属性
一些预设的 Intent
应用程序可请求的权限以及系统预设的权限
Android 平台每个较高版本都会包含之前的 API 更新。
API 的更新机制使得新版本的 API 可以与早期版本保持兼容。 也就是说,大部分的 API 改动都是新增功能,或是引入新 API ,或是替代原有功能。 作为 API 升级过程中的一部分工作,被替换的旧功能被视为过时功能但不会被删除。 因此,现有的应用程序仍然可以使用这些过时的功能。 在极少数情况下,一部分 API 可能会被修改或删除,通常这种改动只是为了确保 API 的稳定性及应用程序或系统的安全性。 早期版本的 API 剩余部分都将原封不动地带入新版本。
Android 平台提供的每个版本的 API 都用一个整数值标识,名为“API级别”。 每个版本的 Android 平台只对应支持一个 API 级别,虽然这隐含了对所有之前版本 API 级别的支持(直至 API 级别 1)。 Android 平台的第一个版本提供了 API 级别 1 ,后续版本的级别依次递增。
下表给出了 Android 平台每个版本对应支持的 API 级别。
⑹ 如何查看Android SDK API文档
查看android api有两种方式:在线查看与离线查看。
1. 在线查看
在线查看一般是指在安卓开发者官网上直接查看,但这需要你的网络环境可以访问谷歌。
官方地址如下:
https://developer.android.com/reference/packages.html
目前最新的API是android 24,如下图,左边可以切换API的版本,右边可以切换显示包索引还是类索引。
依次打开Develop-->Reference,然后就可以看到API文档了。这个docs几乎包含了开发者官网的全部内容,所以除了查看API,还可以查看官方教程等资源。
另外,虽说这是离线文档,但里面包含了谷歌字体服务和几个连接谷歌的脚本,所以打开时可能会很慢。解决方案是用一个编辑器比如Notepad++,搜索各文件中包含的访问谷歌服务的网址字串,并将其替换为空串就可以了。
⑺ Android API 是什么东西
API(Application
Programming
Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节.
简单来说,就是一套可供调用的系统接口.
⑻ android api是什么东西怎么使用
做程序用的。