編輯:Android開發實例
前言
近期做換膚功能,由於換膚程度較高,受限於平台本身,實現起來較復雜,暫時擱置了該功能,但也積累了一些經驗,將分兩篇文章來寫這部分的內容,歡迎交流!
關鍵字:Android動態加載
正文
一、前提
目的:動態加載SD卡中Apk的類。
注意:被加載的APK是未安裝的。
相關:本文是本博另外一篇文章:Android動態加載jar/dex的升級版。
截圖: 成功截圖:
二、准備
准備被調用Android工程:TestB
ITest
public interface ITest {TestBActivity
public class TestBActivity extends Activity implements ITest {代碼說明:很簡單的代碼。將生成後的TestB.apk拷貝到SD卡的根目錄下。
三、調用
調用工程TestA
public class TestAActivity extends Activity {執行的時候可以發現會自動生成TestB.dex文件。動態加載方面還可以搜索一下"Java動態加載"方面的資料,很有參考價值。可以發現比Android動態加載jar/dex使用起來方便得多。
四、下載
TestA.zip
TestB.zip
五、注意
6.1 別忘了加上SDCARD的寫權限:
android.permission.WRITE_EXTERNAL_STORAGE
6.2 同樣注意,不要再兩個工程包含package和名稱相同的接口,否則報錯。(參見Android動態加載jar/dex的後期維護)
六、擴展閱讀
探秘騰訊Android手機游戲平台之不安裝游戲APK直接啟動法
(強烈推薦:QQ游戲動態調用Activity的方法:通過ClassLoader,loadClass Activity類,然後分別在主工程的onDestroy、onKeyDown、onPause、onRestart、onResume等生命周期方法中反射調用(Method、invoke)子工程的類方法來模擬實現整個生命周期。此外巧妙的通過解壓縮APK文件來獲取游戲的資源)
Android中文Wiki:DexFile
七、缺點
6.1 由於是使用反射,無法取得Context,也就是TestBActivity與普通的類毫無區別,沒有生命周期。
本文將引導大家做一個音樂播放器,在做這個Android開發實例的過程中,能夠幫
直接上代碼和圖片。 情況一:[html]代碼如下:<?xml version=1.0 encoding=utf-8?> <LinearLayou
先給大家展示效果圖: package com.example.walkerlogin1; import android.app.Activity; im
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個