首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門(mén) / 進(jìn)階 / 社區(qū)互助

新手 | 你問(wèn)我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 11990|回復(fù): 0
上一主題 下一主題
[教程]

【轉(zhuǎn)】Android應(yīng)用及應(yīng)用管理

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
9      AndroidManifest.xml是Android應(yīng)用的描述文件,它描述了該應(yīng)用的相關(guān)信息,主要包括以下各個(gè)元素。      指定本應(yīng)用內(nèi)java主程序包的包名。當(dāng)沒(méi)有指定apk的文件名時(shí),編譯后產(chǎn)生程序包將以此命名。本包名應(yīng)當(dāng)在Android系統(tǒng)運(yùn)行時(shí)唯一。      指定本應(yīng)用程序所授予的信任級(jí)別,目前有的認(rèn)證級(jí)別有platform(system)、shared、media以及應(yīng)用自定義的認(rèn)證。不同的認(rèn)證可以享受不同的權(quán)限。      權(quán)限組的定義是為了描述一組具有共同特性的權(quán)限。Android系統(tǒng)中預(yù)訂了一些組,它們是:android.permission-group.COST_MONEYandroid.permission-group.MESSAGESandroid.permission-group.MESSAGESandroid.permission-group.PERSONAL_INFOandroid.permission-group.LOCATIONandroid.permission-group.NETWORKandroid.permission-group.ACCOUNTSandroid.permission-group.HARDWARE_CONTROLSandroid.permission-group.PHONE_CALLSandroid.permission-group.SYSTEM_TOOLSandroid.permission-group.DEVELOPMENT_TOOLS   
      從字面意思我們就可以理解每個(gè)組的特性。具體含義可以參考SDK文檔。      權(quán)限用來(lái)描述是否擁有做某件事的權(quán)力。Android系統(tǒng)中權(quán)限是分級(jí)的,前分為普通級(jí)別(Normal),危險(xiǎn)級(jí)別(dangerous),簽名級(jí)別(signature)和系統(tǒng)/簽名級(jí)別(signature or system)。      系統(tǒng)中所有預(yù)定義的權(quán)限根據(jù)作用的不同,分別屬于不同的級(jí)別。      對(duì)于普通和危險(xiǎn)級(jí)別的權(quán)限,我們稱之為低級(jí)權(quán)限,應(yīng)用申請(qǐng)即授予。其他兩級(jí)權(quán)限,我們稱之為高級(jí)權(quán)限或系統(tǒng)權(quán)限,應(yīng)用擁有platform級(jí)別的認(rèn)證才能申請(qǐng)。      當(dāng)應(yīng)用試圖在沒(méi)有權(quán)限的情況下做受限操作,應(yīng)用將被系統(tǒng)殺掉以警示。      系統(tǒng)應(yīng)用可以使用任何權(quán)限。權(quán)限的聲明者可無(wú)條件使用該權(quán)限。      目前Android系統(tǒng)定義了許多權(quán)限,通過(guò)SDK文檔用戶可以查詢到哪些操作需要哪些權(quán)限,然后按需申請(qǐng)。      權(quán)限樹(shù)的設(shè)置是為了統(tǒng)一管理一組權(quán)限,聲明于該樹(shù)下的權(quán)限所有者歸屬該應(yīng)用。系統(tǒng)提供了API,應(yīng)用可以在運(yùn)行時(shí)動(dòng)態(tài)添加。   
    ? PackageManager.addPermission()      Android系統(tǒng)中,安裝應(yīng)用時(shí)不能指定安裝目錄,所有的應(yīng)用都只能裝在預(yù)置文件夾下。      Android系統(tǒng)支持?jǐn)?shù)種安裝方式,而播思通訊的Ophone平臺(tái)在此基礎(chǔ)上支持更多方式。      Android系統(tǒng)中,應(yīng)用安裝包.apk文件屬于默認(rèn)支持的文件類(lèi)型,它的的mime type被定義為"application/vnd.android.package-archive"。      系統(tǒng)內(nèi)置了安裝工具來(lái)解析并安裝.apk文件。你可以從OPhone平臺(tái)的文件管理器中找到對(duì)應(yīng)安裝包,點(diǎn)擊即可啟動(dòng)安裝步驟。這里給出了相應(yīng)的代碼,有興趣的開(kāi)發(fā)者可以嘗試使用。Intent apkintent =  Intent(Intent.ACTION_VIEW);  Uri puri = Uri.fromFile( File(path)); //path is the path of source apk apkintent.setDataAndType(puri, "application/vnd.android.package-archive"); startActivity(apkintent);  
   
      Android系統(tǒng)提供了安裝應(yīng)用的API:PackageManager.installPackage(final Uri packageURI,   
     final IPackageInstallObserver observer, final int flags); uri給出了原文件的地址observer實(shí)現(xiàn)了回調(diào)函數(shù)packageInstalled(final String packageArchiveName, final int returnCode) 以檢查安裝是否成功flags提供安裝標(biāo)識(shí)。Android平臺(tái)提供的標(biāo)識(shí)有:   
1.PackageManager.FORWARD_LOCK_PACKAGE = 0x00000001   
標(biāo)識(shí)本應(yīng)用屬于受限應(yīng)用,應(yīng)用將會(huì)被安裝到保護(hù)目錄,只有該應(yīng)用可以訪問(wèn)代碼段和不屬于resource的asset資源。   
2.PackageManager.REPLACE_EXISTING_PACKAGE = 0x00000002;   
應(yīng)用如已存在,則先刪除再安裝。   
3.PackageManager.SDCARD_PACKAGE = 0x00000004; 由OPhone平臺(tái)擴(kuò)展,標(biāo)識(shí)該應(yīng)用安裝目錄為存儲(chǔ)卡,默認(rèn)為data分區(qū)。 因?yàn)槭謾C(jī)中data分區(qū)大小有限,因此OPhone平臺(tái)默認(rèn)將應(yīng)用裝到存儲(chǔ)卡上。 本API需要"android.permission.INSTALL_PACKAGES"權(quán)限,該權(quán)限屬于簽名級(jí)別,因此只有系統(tǒng)級(jí)別的應(yīng)用程序才能使用。      Android支持拷貝即安裝的方式,即將安裝包拷貝到預(yù)置安裝目錄即可自動(dòng)安裝,但所有的預(yù)置目錄對(duì)于用戶不可見(jiàn)。      OPhone平臺(tái)擴(kuò)展后,用戶可將安裝包拷入存儲(chǔ)卡的app目錄下,系統(tǒng)將監(jiān)控該文件夾,檢測(cè)到新的安裝文件后自動(dòng)安裝。      這種方式適合一次安裝大量應(yīng)用,但是也有壞處。一是無(wú)法知道哪些應(yīng)用安裝成功,哪些安裝失敗, 二是安裝失敗的應(yīng)用將會(huì)作為垃圾存放在預(yù)置目錄中,在系統(tǒng)啟動(dòng)時(shí)延長(zhǎng)啟動(dòng)時(shí)間,三是過(guò)多的應(yīng)用可能將data分區(qū)的空間占用過(guò)多,影響系統(tǒng)的正常使用。解析安裝包是否合法,如果合法即加載應(yīng)用,如果非法即放棄安裝取出代碼段,放入/data/dalvik-cache目錄建立/data/data/包名的文件夾,以存放用戶數(shù)據(jù)將安裝包攜帶的lib放入/data/data/包名/lib中以上步驟完成后將安裝包拷到安裝目錄加載該應(yīng)用信息   
      Android系統(tǒng)同樣支持多種卸載方式。      使用預(yù)置卸載工具      系統(tǒng)內(nèi)置了卸載工具。這里給出了啟動(dòng)代碼,執(zhí)行后即可看到卸載步驟:Uri packageURI = Uri.parse("package:"+packageName); Intent uninstallIntent =  Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent);         Android提供了卸載應(yīng)用的標(biāo)準(zhǔn)API:PackageManager().deletePackage(String packageName, IPackageDeleteObserver observer, int flags);1.     observer實(shí)現(xiàn)了回調(diào)函數(shù)packageDeleted(boolean succeeded)以檢查卸載是否成功2.     flags提供卸載標(biāo)識(shí)。Android平臺(tái)提供的標(biāo)識(shí)有      PackageManager.DONT_DELETE_DATA = 0x00000001;   
      標(biāo)識(shí)卸載時(shí)是否同時(shí)刪除用戶數(shù)據(jù)。       本API需要"android.permission.DELETE_PACKAGES"權(quán)限,該權(quán)限屬于簽名級(jí)別,因此只有系統(tǒng)級(jí)別的應(yīng)用程序才能使用。      對(duì)應(yīng)于拷貝即安裝,系統(tǒng)同樣支持刪除即卸載功能。當(dāng)用戶刪除/sdcard/app目錄下安裝包時(shí),系統(tǒng)將自動(dòng)檢測(cè)到刪除事件并卸載對(duì)應(yīng)應(yīng)用。   
      本方法適合一次刪除大量應(yīng)用。刪除代碼段如果需要?jiǎng)h除用戶數(shù)據(jù),則刪除建立/data/data/包名的文件夾,以存放用戶數(shù)據(jù)刪除應(yīng)用信息刪除安裝包   
      應(yīng)用安裝后即處于可用狀態(tài)。對(duì)于系統(tǒng)中所有應(yīng)用,從管理層面分為信息管理和應(yīng)用調(diào)度兩部分;從應(yīng)用自身角度分為去激活與激活兩種狀態(tài)。   

上一篇:android系統(tǒng)組件介紹
下一篇:android layout_weight講解

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書(shū) | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-11-19 20:40 , Processed in 0.061992 second(s), 15 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表