2017-10-09 20 views
0

新しいバージョンがある場合、リモートホストからアップデートされたapkをダウンロードするアプリケーションアップデータライブラリを作成しました。ユーザーはapkのインストールを促されます。私は、インストール後にapkを削除できるように、インストールが完了するのを待つ方法があるのだろうかと思っていましたか?また、アップデートを受け取ったアプリは現在実行中のアプリであり、アップデートインストールが行われたときにアプリが強制終了されるかどうかはわかりません。インストール後にapkを削除する方法

+2

https://developer.android.com/reference/android/content/Intent.html#EXTRA_RETURN_RESULT – CommonsWare

+0

あなたは例を作るだろうか?私はそれを正しく使っているとは思わない。 –

+0

https://gitlab.com/fdroid/fdroidclient/blob/833ae329e45905b36c60af9f8f11176d77df5280/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java - 基本的に、 'EXTRA_RETURN_RESULT'では、' startActivityForResult( ) 'と' onActivityResult() 'を呼び出すことができます(例えば、' ACTION_GET_CONTENT')。 – CommonsWare

答えて

0

CommonsWare私はstartActivityForResultを使用する必要がありました。次にonActivityResultは、次回のアプリケーションの起動時に呼び出されます。ここに私がしたことがあります。上記の機能を実装するかの例を示しますしてくださいリソースを提供する方法については

@Override 
public void onInstallClick() { 
    File file = new File(getActivity().getFilesDir(), mParameters.getPackageName() + ".apk"); 

    if (!file.exists()) 
     return; 

    Uri uri = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider", file); 

    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setData(uri); 
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    intent.putExtra(Intent.EXTRA_RETURN_RESULT, true); 
    startActivityForResult(intent, REQUEST_INSTALL); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_INSTALL) { 
     if (resultCode == Activity.RESULT_OK) { 
      File file = new File(getActivity().getFilesDir(), mParameters.getPackageName() + ".apk"); 

      if (file.exists()) 
       file.delete(); 
     } 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 
関連する問題