首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Android 開發利器:封裝常用功能的 BaseActivity 完整原始碼分享

     編輯:Java 相關知識

專案背景

在 Android 開發中,每個 Activity 經常需要重複編寫通話、簡訊、聯絡人讀取、儲存空間查詢、網路請求、SharedPreferences 操作等樣板代碼。本文分享一個功能豐富的 BaseActivity,將這些高頻工具方法封裝於父類中,子類繼承即可直接調用,大幅提升開發效率。

核心功能清單

分類代表方法說明
電話與簡訊Call(String), sendSMS(String, String), getAllSMS(), getSentSms(), getReceivedSms()撥打電話、發送/查詢簡訊
聯絡人getContacts(), insertContacts(Contact...)讀取/寫入聯絡人
儲存空間getPhoneDataDirectory(), getSDCardDirectory(), getPhoneFreeSize(), getSDcardFreeSize(), getPhoneSize(), getSDCardSize()取得內部/外部儲存路徑與可用空間
網路請求Get(String, NetResult), Post(String, Map, NetResult), Post(String, Map, Map, NetResult), download(String, NetResult)支援 GET/POST、表單上傳、檔案下載
SharedPreferencesGetSharedPreferences(), GetSharedPreferences(String), PutSharedPreferences(String, Object), PutSharedPreferences(SharedPreferences, String, Object), SetSharedPreference(SharedPreferences)鍵值對持久化存取
系統工具isNetWorkUseful(), isSDCardUseful(), formatMemorySize(long), Show(int)網路/SD卡狀態檢測、記憶體格式化、自訂 Toast

關鍵代碼片段

void Call(java.lang.String number) // 撥打電話
void download(java.lang.String url, NetResult result) // 下載檔案
java.lang.String formatMemorySize(long memorySize) // 格式化記憶體大小
void Get(java.lang.String url, NetResult result) // GET 請求
java.util.List getAllSMS() // 取得所有簡訊
java.util.List getContacts() // 取得所有聯絡人
java.io.File getPhoneDataDirectory() // 手機內部儲存目錄
long getPhoneFreeSize() // 手機可用空間
long getPhoneSize() // 手機總空間
java.io.File getSDCardDirectory() // SD卡目錄
long getSDcardFreeSize() // SD卡可用空間
long getSDCardSize() // SD卡總空間
SharedPreferences GetSharedPreferences() // 預設 SharedPreferences
SharedPreferences GetSharedPreferences(java.lang.String name) // 指定名稱 SharedPreferences
java.util.List getSMSByAddress(java.lang.String address) // 指定號碼簡訊
void insertContacts(Contact... contacts) // 插入聯絡人
void insertSMS(SMS... smss) // 插入簡訊
boolean isNetWorkUseful() // 網路是否可用
boolean isSDCardUseful() // SD卡是否有效
void Post(java.lang.String actionUrl, java.util.Map params, java.util.Map files, NetResult netResult) // POST 上傳檔案
void Post(java.lang.String url, java.util.Map params, NetResult result) // POST 提交數據
void PutSharedPreferences(SharedPreferences sp, java.lang.String key, java.lang.Object value) // 存入指定 SP
void PutSharedPreferences(java.lang.String key, java.lang.Object value) // 存入預設 SP
boolean sendSMS(java.lang.String number, java.lang.String content) // 發送簡訊
void SetSharedPreference(SharedPreferences sharedPreferences) // 設定自定義 SP
void Show(int layout_ID) // 顯示自訂提示

使用方式

  1. 將此類複製至專案中(套件名自行調整)。
  2. 在 AndroidManifest.xml 添加必要權限:
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  3. 讓自定義 Activity 繼承此 BaseActivity:
    public class MainActivity extends BaseActivity { ... }
  4. 直接調用方法,例如:
    Call("10086");
    String size = formatMemorySize(getPhoneFreeSize());
    Post("https://api.example.com", params, callback);

設計亮點

  • 集中管理:所有 Context 相關操作封裝在基類,避免記憶體洩漏風險。
  • 回調統一:網路請求採用 NetResult 介面,支援成功/失敗/進度回調。
  • 線程安全:耗時操作(如查詢簡訊、聯絡人)建議在子線程執行,基類已提供異步封裝範例。

注意事項

Android 6.0+ 需動態申請危險權限(CALL_PHONE, READ_CONTACTS 等),本基類未包含權限請求邏輯,請在子類或使用前自行處理。網路請求預設使用 HttpURLConnection,生產環境建議替換為 OkHttp 或 Retrofit。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved