2012-12-04 5 views
0

큰 문제가 있습니다. 첫째, 항목 목록이 있습니다. 사용자가 각 항목을 클릭하면 내 앱이 인터넷에서 다운로드 파일을 시작합니다. AsyncTask serial excutor를 사용하여 이것을 구현했습니다. 다운로드 파일을 완료 한 후 내 앱이 Android Installer를 즉시 실행하고 애플리케이션이 성공적으로 설치됩니다. 나는 서버에 장치의 정보를 보낼AsyncTask를 사용하여 일련 번호와 함께 AsyncTask 파일을 다운로드하고 onActivityResult 문제를 호출하십시오.

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); 
} 

내 질문 : 당신은 파일 다운로드가 완료되면, 내 응용 프로그램이 새로운 활동에 안드로이드 설치 프로그램을 실행보고 보낼 수 있습니다 결과가 주 활동으로 돌아갑니다. (OnActivityResult() 호출) 여기에서 문제는 5 개의 파일을 다운로드하면 내 응용 프로그램이 새 응용 프로그램 설치를위한 5 개의 새 활동을 실행하므로 각 하위 활동의 ​​결과가 주 활동으로 되돌릴 수 없습니다. 이 문제를 해결할 방법이 있습니까?

답변

0

파일을 다운로드하자 마자 파일을 큐에 추가하십시오. 그런 다음 대기열의 항목 수가 1보다 큰지 여부를 확인합니다. 1보다 크면 아무런 조치도 취하지 마십시오. 1과 같으면 설치를 시작하십시오. 이제 설치가 완료된 후 대기열에서 항목을 제거합니다. 그런 다음 다시 확인하여 대기열에 항목이 있는지 확인하십시오. 그리고 같은 논리를 따르십시오.

+0

멋진 솔루션, 매우 도움을 주신 데 – chinh

+0

문제 없습니다. 설치 실패, 다운로드 실패 등의 오류 사례를 올바르게 처리해야 할 수도 있습니다. –