2013-11-01 2 views
1

Я пытаюсь создать автоматическое обновление для своего приложения без использования Android Market для приложения, которое будет распространяться только для моих клиентов. У меня есть код ниже, но он не работает. Это дает мне ошибку Android.content.ActivityNotFoundException : In Actitivy found to handle intent { ....Auto update NO MARKET DELPHI XE5

Неужели кому-нибудь удалось это сделать в обновлении Delphi XE5?

TFrmMain.BtnInstalarClick procedure (Sender : TObject) ; 
var 
    Intent : JIntent ; 
    Uri : TJnet_Uri ; 
begin 
    Intent : = TJIntent.Create ; 
    Intent.setAction (TJIntent.JavaClass.ACTION_VIEW); 
    Intent.setDataAndType(TJnet_Uri.JavaClass.parse(StringToJString('/storage/sdcard0/Android/data/com.CloudCon.AtualizacaoAutomatica/files/Rota.apk')),StringToJString('application/vnd.android.package-archive')); 
     SharedActivity.startActivity (Intent) ; 
end ; 

Путь верный. Также были установлены разрешения INTERNET, WRITE_EXTERNAL_STORAGE и INSTALL_PACKAGES.

Видимо, я могу сделать следующее в Java:

" String command = " chmod 666 " + PATH ; 
Runtime.getRuntime () . Exec (command) ; " 

Как я могу сделать это в Delphi.

ответ

1

Вы можете попробовать этот код,

var 
    aFile:Jfile; 
    Intent:JIntent; 
begin  

    aFile:=TJfile.JavaClass.init(stringtojstring('/storage/sdcard0/Android/data/com.CloudCon.AtualizacaoAutomatica/files/'),stringtojstring('Rota.apk')); 
    Intent := TJIntent.Create ; 
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); 
    Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); 
    Intent.setDataAndType(TJnet_Uri.JavaClass.fromFile(aFile),StringToJString('application/vnd.android.package-archive')); 
    SharedActivityContext.startActivity(Intent); 
end; 
Смежные вопросы