91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

自定義版本更新彈窗

發布時間:2020-08-09 03:32:27 來源:網絡 閱讀:220 作者:楊充 欄目:移動開發

自定義版本更新彈窗

目錄介紹
  • 1.本庫優勢亮點
  • 2.使用介紹
  • 3.注意要點
  • 4.效果展示
  • 5.其他介紹

好消息

該庫的GitHub地址:https://github.com/yangchong211/YCUpdateApp
  • 博客筆記大匯總【16年3月到至今】,包括Java基礎及深入知識點,Android技術博客,Python學習筆記等等,還包括平時開發中遇到的bug匯總,當然也在工作之余收集了大量的面試題,長期更新維護并且修正,持續完善……開源的文件是markdown格式的!同時也開源了生活博客,從12年起,積累共計47篇[近20萬字],轉載請注明出處,謝謝!
  • 鏈接地址:https://github.com/yangchong211/YCBlogs
  • 如果覺得好,可以star一下,謝謝!當然也歡迎提出建議,萬事起于忽微,量變引起質變!

1.本庫優勢亮點

  • 支持后臺下載,支持斷點下載。支持監聽下載過程,下載成功,失敗,異常,下載中,暫停等多種狀態
  • 用戶可以設置是否支持強制更新,還支持用戶設置版本更新內容,當內容過長,可以實現滾動模式
  • 支持進度條顯示,對話框進度條,并且下載中支持通知欄進度條展示,解決8.0通知欄不顯示問題
  • 由于下載apk到本地需要權限,固在lib中已經處理這個邏輯,只有當有讀寫權限時才會下載文件,沒有權限則跳轉設置頁面打開權限
  • 調用十分簡單,相比AppUpdate,CheckVersionLib等庫的特點是不用設置http的get或者post請求,只需要傳入下載鏈接就可以
  • 相比GitHub上幾個主流的版本更新庫,我這個lib代碼量少很多,我覺得最少最精簡的代碼完成需要的功能就最好
  • 適配 Android 7.0 FileProvider,處理了7.0以上安裝apk異常問題,在lib中已經配置了fileProvider,直接使用就可以
  • 使用dialogFragment替換了dialog,處理了重建后邏輯,dialogFragment深入分析博客
  • 下載完成后自動安裝,對于錯誤的下載鏈接地址,會下載異常,也可以查看異常的日志
  • 當下載完成后,再次彈窗,則會先判斷本地是否已經下載,如果下載則直接提示安裝
  • 支持設置自定義下載文件路徑,如果不設置,則直接使用lib中的路徑【sd/apk/downApk目錄下】
  • 當apk下載失敗,異常,錯誤等狀態,支持重啟下載任務。功能十分強大,已經用于正式app多時,你采用拿來主義使用即可,歡迎提出問題。

2.使用介紹

2.1 關于庫導入
  • 在build.gradle中直接導入:compile 'cn.yc:YCUpdateLib:1.0.2'
2.2 使用說明
  • 代碼如下所示,就是這么簡單
    //設置自定義下載文件路徑
    UpdateUtils.APP_UPDATE_DOWN_APK_PATH = "apk" + File.separator + "downApk";
    String  desc = getResources().getString(R.string.update_content_info);
    /*
    * @param isForceUpdate             是否強制更新
    * @param desc                      更新文案
    * @param url                       下載鏈接
    * @param apkFileName               apk下載文件路徑名稱
    * @param packName                  包名
    */
    UpdateFragment.showFragment(MainActivity.this,
        false,firstUrl,apkName,desc,BuildConfig.APPLICATION_ID);
2.3 lib庫中解決了代碼中安裝 APK文件異常問題【注意lib已經解決該問題】
  • 直接調用工具類UpdateUtils.installNormal方法
  • 關于在代碼中安裝 APK 文件,在 Android N 以后,為了安卓系統為了安全考慮,不能直接訪問軟件,需要使用 fileProvider 機制來訪問、打開 APK 文件。里面if 語句,就是區分軟件運行平臺,來對 intent 設置不同的屬性。
/**
 * 關于在代碼中安裝 APK 文件,在 Android N 以后,為了安卓系統為了安全考慮,不能直接訪問軟件
 * 需要使用 fileProvider 機制來訪問、打開 APK 文件。
 * 普通安裝
 * @param context                   上下文
 * @param apkPath                   path,文件路徑
 * @param pathName                  你的包名
 */
public static void installNormal(Context context, String apkPath , String pathName) {
    if(apkPath==null || pathName==null){
        return;
    }
    Intent intent = new Intent(Intent.ACTION_VIEW);
    File apkFile = new File(apkPath);
    // 由于沒有在Activity環境下啟動Activity,設置下面的標簽
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    //版本在7.0以上是不能直接通過uri訪問的
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        //參數1 上下文, 參數2 Provider主機地址 和配置文件中保持一致   參數3  共享的文件
        Uri apkUri = FileProvider.getUriForFile(context, pathName+".fileProvider", apkFile);
        //添加這一句表示對目標應用臨時授權該Uri所代表的文件
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    } else {
        Uri uri = Uri.fromFile(apkFile);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
    }
    context.startActivity(intent);
}
  • 清單文件添加代碼如下所示:
<provider
    android:name=".VersionFileProvider"
    android:authorities="${applicationId}.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  • 在res/xml下增加文件:file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
        <external-path
            name="external_files"
            path="." />
        <root-path
            name="root_path"
            path="." />
</paths>

3.注意要點

  • 注意需要申請讀寫權限,如果你要使用,可以自定定義通知欄下載UI布局,可以自己設置彈窗UI。這里就不適用正式項目中的UI和圖標,圖標是使用別人的,請勿商用。

4.效果展示

自定義版本更新彈窗
自定義版本更新彈窗
自定義版本更新彈窗
自定義版本更新彈窗
自定義版本更新彈窗
自定義版本更新彈窗

5.其他介紹

關于其他內容介紹

自定義版本更新彈窗

版本更新說明
  • v1.0.0 更新于2017年8月13日
  • v1.0.1 更新于2017年12月9日
  • v1.0.2 更新于2017年11月21日
關于博客匯總鏈接
  • 1.技術博客匯總
  • 2.開源項目匯總
  • 3.生活博客匯總
  • 4.喜馬拉雅音頻匯總
  • 5.其他匯總
關于LICENSE
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://×××w.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青铜峡市| 蚌埠市| 韶山市| 县级市| 区。| 长春市| 大关县| 宣化县| 南漳县| 革吉县| 兰州市| 沁源县| 依安县| 讷河市| 海淀区| 石楼县| 民丰县| 横山县| 毕节市| 孟州市| 镶黄旗| 西和县| 江北区| 桃江县| 翁牛特旗| 伊吾县| 郑州市| 万荣县| 海南省| 闵行区| 吴川市| 固安县| 长汀县| 巴南区| 西乡县| 阳城县| 定南县| 筠连县| 绵竹市| 阿克| 汽车|