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是什麼東西怎麼使用
做程序用的。