2016-04-15 50 views
0

APK的原因有幾個,我不希望使用谷歌播放機制,提升Android應用程序。所以我決定讓我自己的系統下載並升級一個android應用程序。開始在Android的德爾福西雅圖應用程序錯誤

第1步:下載更新.apk文件。

步驟2:把一個按鈕,在原有的應用程序,使用戶可以點擊它開始.apk升級。

以下代碼給我一個錯誤。

procedure TfrmUpdateProgram.DoUpgrade; 
    {$IF DEFINED(IOS) or DEFINED(ANDROID)} 
    var Intent : JIntent; 
    {$ELSE} 
    {$ENDIF} 
    begin 
    {$IF DEFINED(IOS) or DEFINED(ANDROID)} 
     Intent := TJIntent.Create; 
     Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); 
     Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); 
     Intent.setDataAndType(StrToJURI(newAPKFile), StringToJString('application/vnd.android.package-archive')); 

     SharedActivityContext.startActivity(Intent); 
     Application.Terminate; 

    {$ELSE} 
     ShellExecute(0, PWideChar('Open'), PWideChar(newAPKFile), nil, nil, SW_HIDE); 
    {$ENDIF} 
    end; 

android.content.activitynotfoundexception:無活動處理意向{行動= android.intent.action.view DAT = /存儲..... update.apk典型值=應用程序/ vnd.android .package-archive flg = 0x1000000}

有什麼想法?

+0

意圖是Android特有的功能,他們不會在iOS的存在,所以你將不得不使用不同的代碼時'限定(IOS)'是真實的。 –

+0

相關:[在Android上以編程方式安裝應用程序](http://stackoverflow.com/questions/4604239/) –

回答

0

嘗試刪除調用Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK),它並不是必需的。

確保.apk文件在啓動Intent之前是世界可讀的,除非將它存儲到公共外部文件夾中。並確保它可通過file: URI訪問。

,並確保您的Android設備被配置爲允許來自未知來源安裝的應用。