0

大きな問題があります。まず、アイテムのリストがあります。ユーザーが各アイテムをクリックすると、アプリはインターネットからファイルのダウンロードを開始します。これを AsyncTask シリアル エグゼキューターで実装しました。ファイルのダウンロードが完了すると、アプリケーションが正常にインストールされたときに、アプリがすぐに Android インストーラーの実行を開始します。デバイスの情報をサーバーに送信したい

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
activity.startActivityForResult(intent, 1);

MainActivity.java

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        List<PackageInfo> packs = this.getPackageManager()
                .getInstalledPackages(0);
        for (int i = 0; i < packs.size(); i++) {
            PackageInfo p = packs.get(i);
            if (InstalledPackageName != null
                    && InstalledPackageName.equals(p.packageName)) {
           //file install success 
                QstoreRestClient rest = new QstoreRestClient(this,
                        "Please wait...");
                SecurityInstallManager secure = new SecurityInstallManager();
                String strDeviceID = getUniqueDeviceId();
                String strProductID = InstalledPackageID;
                String strToken = mToken;
                String strModel = getModelDevice();
                Log.d("QSTORE mUserName", mUserName);
                Log.d("QSTORE strProductID", strProductID);
                Log.d("QSTORE strDeviceID", strDeviceID);
                Log.d("QSTORE strToken", strToken);
                Log.d("QSTORE strModel", strModel);
                String strSHA = secure.getSHAHighscore(mUserName,
                        strDeviceID, strProductID, strToken);
                rest.installShowLoading(mUserName, strProductID,
                        strDeviceID, strSHA, strModel, this);
                Log.d("QSTORE", "Already Installed");
                // return;
            }
        }
        // }

        InstalledPackageName = null;
        InstalledPackageID = null;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

私の質問:ファイルのダウンロードがいつ完了したかを確認できます。私のアプリは新しいアクティビティで Android インストーラーを実行し、結果をメイン アクティビティに送り返します (OnActivityResult() を呼び出します)各子アクティビティの結果がメイン アクティビティに返されないように、新しいアプリケーションをインストールするためのアクティビティ。この問題を解決する方法はありますか?

4

1 に答える 1

0

ファイルのダウンロードが完了したらすぐに、ファイルをキューに追加します。次に、キュー内のアイテムの数が 1 より大きいかどうかを確認します。1 より大きい場合は、何も実行しません。1 に等しい場合は、インストールを開始します。インストールが成功したら、キューからエントリを削除します。そして、もう一度チェックを行い、キューにアイテムが他にもあるかどうかを確認します。そして、同じロジックに従います。

于 2012-12-04T08:39:02.223 に答える