Android應用及應用管理

來源:互聯網
上載者:User

AndroidManifest.xml

      AndroidManifest.xml是Android應用的描述檔案,它描述了該應用的相關資訊,主要包括以下各個元素。

包名(package)

      指定本應用內java主程式包的包名。當沒有指定apk的檔案名稱時,編譯後產生程式包將以此命名。本包名應當在Android系統運行時唯一。

認證(certificate)

      指定本應用程式所授予的信任層級,目前有的認證層級有platform(system)、shared、media以及應用自訂的認證。不同的認證可以享受不同的許可權。

許可權組(permission-group)

      許可權組的定義是為了描述一組具有共同特性的許可權。Android系統中預訂了一些組,它們是:

  • android.permission-group.COST_MONEY
  • android.permission-group.MESSAGES
  • android.permission-group.MESSAGES
  • android.permission-group.PERSONAL_INFO
  • android.permission-group.LOCATION
  • android.permission-group.NETWORK
  • android.permission-group.ACCOUNTS
  • android.permission-group.HARDWARE_CONTROLS
  • android.permission-group.PHONE_CALLS
  • android.permission-group.SYSTEM_TOOLS
  • android.permission-group.DEVELOPMENT_TOOLS

      從字面意思我們就可以理解每個組的特性。具體含義可以參考SDK文檔。

許可權(permission)

      許可權用來描述是否擁有做某件事的權力。Android系統中許可權是分級的,前分為普通層級(Normal),危險層級(dangerous),簽名層級(signature)和系統/簽名層級(signature or system)。

      系統中所有預定義的許可權根據作用的不同,分別屬於不同的層級。

      對於普通和危險層級的許可權,我們稱之為低級許可權,應用申請即授予。其他兩級許可權,我們稱之為進階許可權或系統許可權,應用擁有platform層級的認證才能申請。

      當應用試圖在沒有許可權的情況下做受限操作,應用將被系統殺掉以警示。

      系統應用可以使用任何許可權。許可權的聲明者可無條件使用該許可權。

      目前Android系統定義了許多許可權,通過SDK文檔使用者可以查詢到哪些操作需要哪些許可權,然後按需申請。

許可權樹(permission-tree)

      許可權樹的設定是為了統一管理一組許可權,聲明於該樹下的許可權所有者歸屬該應用。系統提供了API,應用可以在運行時動態添加。
    Ø PackageManager.addPermission()

應用安裝

      Android系統中,安裝應用時不能指定安裝目錄,所有的應用都只能裝在預置檔案夾下。

      Android系統支援數種安裝方式,而播思通訊的Ophone平台在此基礎上支援更多方式。

<使用預置安裝工具

      Android系統中,應用安裝包.apk檔案屬於預設支援的檔案類型,它的的mime type被定義為"application/vnd.android.package-archive"。

      系統內建了安裝工具來解析並安裝.apk檔案。你可以從OPhone平台的檔案管理工具中找到對應安裝包,點擊即可啟動安裝步驟。這裡給出了相應的代碼,有興趣的開發人員可以嘗試使用。

Intent apkintent = new Intent(Intent.ACTION_VIEW); final Uri puri = Uri.fromFile(new File(path)); //path is the path of source apk apkintent.setDataAndType(puri, "application/vnd.android.package-archive"); startActivity(apkintent);  

使用API安裝

      Android系統提供了安裝應用的API:PackageManager.installPackage(final Uri packageURI, 
     final IPackageInstallObserver observer, final int flags); 

  • uri給出了原檔案的地址
  • observer實現了回呼函數packageInstalled(final String packageArchiveName, final int returnCode) 以檢查安裝是否成功
  • flags提供安裝標識。Android平台提供的標識有: 

1.PackageManager.FORWARD_LOCK_PACKAGE = 0x00000001
標識本應用屬於受限應用,應用將會被安裝到保護目錄,只有該應用可以存取碼段和不屬於resource的asset資源。
2.PackageManager.REPLACE_EXISTING_PACKAGE = 0x00000002;
應用如已存在,則先刪除再安裝。
3.PackageManager.SDCARD_PACKAGE = 0x00000004;

 由OPhone平台擴充,標識該應用安裝目錄為儲存卡,預設為data分區。

 因為手機中data分區大小有限,因此OPhone平台預設將應用裝到儲存卡上。

 本API需要"android.permission.INSTALL_PACKAGES"許可權,該許可權屬於簽名層級,因此只有系統層級的應用程式才能使用。

拷貝即安裝

      Android支援拷貝即安裝的方式,即將安裝包拷貝到預置安裝目錄即可自動安裝,但所有的預置目錄對於使用者不可見。

      OPhone平台擴充後,使用者可將安裝包拷入儲存卡的app目錄下,系統將監控該檔案夾,檢測到新的安裝檔案後自動安裝。

      這種方式適合一次安裝大量應用,但是也有壞處。一是無法知道哪些應用安裝成功,哪些安裝失敗, 二是安裝失敗的應用將會作為垃圾存放在預置目錄中,在系統啟動時延長啟動時間,三是過多的應用可能將data分區的空間佔用過多,影響系統的正常使用。

安裝步驟

  • 解析安裝包是否合法,如果合法即載入應用,如果非法即放棄安裝
  • 取出程式碼片段,放入/data/dalvik-cache目錄
  • 建立/data/data/包名的檔案夾,以存放使用者資料
  • 將安裝包攜帶的lib放入/data/data/包名/lib中
  • 以上步驟完成後將安裝包拷到安裝目錄
  • 載入該應用資訊 

應用卸載

      Android系統同樣支援多種卸載方式。

      使用預置卸載工具

      系統內建了卸載工具。這裡給出了啟動代碼,執行後即可看到卸載步驟:

Uri packageURI = Uri.parse("package:"+packageName); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent);   

使用API卸載

      Android提供了卸載應用的標準API:PackageManager().deletePackage(String packageName, IPackageDeleteObserver observer, int flags);

1.     observer實現了回呼函數packageDeleted(boolean succeeded)以檢查卸載是否成功

2.     flags提供卸載標識。Android平台提供的標識有

      PackageManager.DONT_DELETE_DATA = 0x00000001;
      標識卸載時是否同時刪除使用者資料。 

      本API需要"android.permission.DELETE_PACKAGES"許可權,該許可權屬於簽名層級,因此只有系統層級的應用程式才能使用。

刪除即卸載

      對應於拷貝即安裝,系統同樣支援刪除即卸載功能。當使用者刪除/sdcard/app目錄下安裝包時,系統將自動檢測到刪除事件並卸載對應應用。
      本方法適合一次刪除大量應用。

卸載步驟

  • 刪除程式碼片段
  • 如果需要刪除使用者資料,則刪除
  • 建立/data/data/包名的檔案夾,以存放使用者資料
  • 刪除應用資訊
  • 刪除安裝包

應用使用

      應用安裝後即處於可用狀態。對於系統中所有應用,從管理層面分為資訊管理和應用調度兩部分;從應用自身角度分為去啟用與啟用兩種狀態。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.