0

クライアントのみに配布されるアプリケーションに対して、Android マーケットを使用せずにアプリケーションの自動更新を作成しようとしています。以下のコードがありますが、機能していません。それは私にエラーを与えますAndroid.content.ActivityNotFoundException : In Actitivy found to handle intent { ...

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 ;

パスは正しいです。INTERNETWRITE_EXTERNAL_STORAGE、およびの権限INSTALL_PACKAGESも設定されました。

どうやら私はJavaで次のことができます:

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

Delphiでこれを行うにはどうすればよいですか。

4

1 に答える 1

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;   
于 2014-01-10T04:30:05.603 に答える