2016-09-20 3 views
0

私はウェブ上でアップデートをダウンロードしています。これは最新のボレーバージョンです。現在私はStringrequestを使用しています。ボレーを使用したAPKのダウンロードとインストール

class UpdateService : IntentService("Update Serivce") { 
companion object { 
    val VERSION_URL = "<version url>" 
    val FILE_URL = "<apk url>" 
    val LOG_TAG = "UPDATE" 
    fun initialize(context: Context) = context.startService(Intent(context, UpdateService::class.java)) 
} 

/** 
* Checks remote for an update 
*/ 
override fun onHandleIntent(intent: Intent?) { 
    Log.d(LOG_TAG, "Retrieving new version") 
    // Get version number 
    NetworkService().get(Uri.parse(VERSION_URL), 
      Response.Listener { success(it) }, 
      Response.ErrorListener { 
       Log.d(LOG_TAG, "Failed to update ${it.toString()}") 
       FirebaseCrash.report(it) 
      }) 
} 

private fun success(it: String?) { 
    Log.d(LOG_TAG, "Remote version: $it") 
    Log.d(LOG_TAG, "Local version: ${BuildConfig.VERSION_NAME}") 

    if (!it.equals(BuildConfig.VERSION_NAME)) { 
     Log.d(LOG_TAG, "Fetching new update") 
     NetworkService().get(
       Uri.parse(FILE_URL), 
       Response.Listener { installUpdate(it) }, 
       Response.ErrorListener { 
        Log.d(LOG_TAG, "failed to get new APK") 
        FirebaseCrash.report(it) 
       } 
     ) 
    } 
} 

private fun installUpdate(it: String) { 
    Log.d(LOG_TAG, "retrieved update") 

    val file = File(this.externalCacheDir, "update.apk") 

    if(!file.exists()){ 
     file.createNewFile() 
    } 

    file.writeBytes(it.toByteArray()) 

    val intent = Intent(Intent.ACTION_VIEW) 
    intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive") 
    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK 

    Log.d(LOG_TAG, "Installing") 

    startActivity(intent) 
} 

}

設置活動を開始、私はアンドロイドから構文解析エラーが発生します。

can't parse

どのように私はボレーで使用可能なAPKとして、ファイルをダウンロードして保存することができますか?

+0

apkの最小バージョンと電話番号を確認してください – PriyankaChauhan

+0

開発用に使用しているのと同じデバイスを使用しています。これはここでは問題ではありません。 – Samyn

+0

署名されたapkですか?あなたは '未知の資源'設定を有効にしましたか?場合によっては、apkファイルが正しく/完全にダウンロードされないと、このエラーが発生することがあります。 –

答えて

0

問題はディレクトリにあります。私はキャッシュディレクトリに書き込みを試み、そこからインストールしました。ディレクトリをcontext.getExternalFilesDir(<Appname>, "update.apk")に変更しても、問題なくインストールされます。

関連する問題