1. 程式人生 > >基於Eros的Android端功能增強的工具類庫

基於Eros的Android端功能增強的工具類庫

當前工具類支援--基礎依賴包wxframework <= 1.0.9 的版本

如果您的基礎依賴包wxframework的版本 > 1.0.9 , 為了使該工具類繼續可以使用, 可前往: Eros-plugin-android-extend

基於Eros框架下的相關功能(weex 與 Android 的互動):

  1. Android端檔案的檢視,下載,預覽基本功能
  2. 本地快取大小的獲取,清除功能
  3. 跳轉至應用市場評分頁(支援三星市場)
  4. 獲取軟鍵盤的高度
  5. 獲取螢幕的高度(不包含虛擬按鍵),版本 0.0.9
  6. 為下載新增token引數,版本 0.1
  7. 修改開啟Txt文件崩潰的BUG , 版本0.1.1
  8. 修改下載檔案的進度值的返回值問題, 版本0.1.2

Add dependency

	dependencies {
	        implementation 'com.github.heynchy:eros-plugin-filecache-manager:0.1.2'
	}

檔案操作Module

1. Module名稱: FileModule

2. 相關方法:

2.1 檔案下載
        
   /**
     * 下載檔案的方法,帶有進度的
     *
     * @param params   必須傳遞(Json 格式),相關引數包含url, fileId, fileName,token(需要許可權的傳遞該引數)
     * @param success  下載成功的回撥
     * @param failure  下載失敗的回撥
     * @param progress 下載進度的回撥
     */
    @JSMethod(uiThread = true)
    public void downloadFile(String params, final JSCallback success, final JSCallback failure, final JSCallback progress)    
2.2 判斷檔案是否存在(是否已下載)
   /**
     * 判斷檔案是否存在
     *
     * @param params  Json格式,包含fileId 和 fileName
     * @param resultCallback  結果回撥(true: 檔案存在 false: 檔案不存在)
     */
    @JSMethod(uiThread = true)
    public void isFileExist(String params, JSCallback resultCallback)
 2.3 預覽檔案(檢視檔案)
     /**
     * 預覽檔案
     *
     * @param params  Json 格式,包含fileId 和fileName
     */
    @JSMethod(uiThread = true)
    public void previewFile(String params)
2.4 開啟應用市場的評分頁(應用詳情頁)
    /**
     * 跳轉至應用市場的評價介面
     */
    @JSMethod(uiThread = true)
    public void marketComment()

快取資料操作Module

1. Module 名稱: CacheModule

2. 相關方法

2.1	獲取快取檔案的大小
   /**
    * 獲取應用快取的大小
    * 
    * @param callback  結果回撥(返回快取大小的字串, 例如"2.37MB")
    */
    @JSMethod(uiThread = true)
    public void getCachesSize(JSCallback callback) 
2.2	清除快取
   /**
     * 清除應用快取
     *
     * @param callback  結果回撥(如果清除成功則返回true, 否則返回false)
     */
    @JSMethod(uiThread = true)
    public void clearCaches(JSCallback callback)

Android相關功能的Module

1. Module 名稱: UtilModule

2. 相關方法

 2.1 獲取Android手機軟體盤的高度
    /**
     * 獲取Android手機軟鍵盤的高度,返回值包括pxHeight(以px為單位)和dpHeight(以dp為單位)-----非監聽形式
     *
     * @param callback           軟鍵盤彈出的回撥
     * @param callbackInvisible  軟鍵盤隱藏的回撥
     */
    @JSMethod(uiThread = true)
    public void getSoftKeyInfo(final JSCallback callback, final JSCallback callbackInvisible) 
    
   /**
     * 獲取Android手機軟鍵盤的高度----監聽形式
     *
     * @param callback          軟鍵盤彈出的回撥
     * @param callbackInvisible 軟鍵盤隱藏的回撥
     */
    @JSMethod(uiThread = true)
    public void getSoftKeyInfoAlive(final JSCallback callback, final JSCallback callbackInvisible)
2.1.1 JS端使用說明
    weex.requireModule('UtilModule').getSoftKeyInfo(visible => {
                   // 軟鍵盤彈出後的相關操作
                    var date = JSON.parse(visible);
                    console.log("heyn_OtherNormalModule1: "+ date.pxHeight);
                    console.log("heyn_OtherNormalModule2: "+ date.dpHeight);
                }, invisible =>{
		   // 軟鍵盤隱藏後的相關操作
                    var date = JSON.parse(invisible);
                    console.log("heyn_OtherNormalModule3: "+ date.pxHeight);
                    console.log("heyn_OtherNormalModule4: "+ date.dpHeight);
                });
2.2 獲取Android手機的螢幕高度(不包含虛擬按鍵)
    /**
     * 獲取Android螢幕尺寸,但是不包括虛擬鍵的高度
     *
     * @param callback 返回值的回撥(已轉換為JS端可用資料)
     */
    @JSMethod(uiThread = true)
    public void getNoHasVirtualKey(final JSCallback callback)

JS 呼叫方式----舉例——清除快取的使用

<template>
  <div>
    <text onclick="click">testMyModule</text>
  </div>
</template>

<script>
  module.exports = {
    methods: {
      click: function() {
        weex.requireModule('CacheModule').clearCaches(params => {
           if (params){
               //  清除成功
           } else {
              //  清除失敗
           }
        });
      }
    }
  }
</script>

注意事項

1. 涉及到相關許可權問題,需要手動新增至自己工程的AndroidManifest.xml中(針對上架的許可權稽核問題)
   1.1 檔案操作許可權包括:
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
       <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /
   1.2 網路許可權:
        <uses-permission android:name="android.permission.INTERNET" /> 
   1.3 Android 8.0以上版本的APk安裝時,需要安裝許可權:
        <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />