2016-04-15 134 views
2

我有一個紮根的android設備,我通過編程方式下載和安裝更新。安裝時不會彈出用戶,要求安裝權限或顯示安裝期間可能發生的任何錯誤。一切都發生在後臺。以下是我執行安裝的SoftwareInstallActivity以編程方式執行安裝時出現安裝失敗

public class SoftwareInstallActivity extends Activity{ 

private TextView titleView; 
private ImageView loadingView; 
private String fileName =null; 
private static Logger log=Logger.getRootLogger(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alert_screen); 
    log.debug("Launching SoftwareInstall Activity"); 
    fileName=getIntent().getExtras().getString("FileName"); 
    if(fileName==null && fileName.length()==0){ 
     log.debug("filename is null or of zero length"); 
     return;   
    } 
    log.debug("Name of apk file"+fileName); 
    loadingView  = (ImageView)findViewById(R.id.loading);   
    titleView   = (TextView)findViewById(R.id.text1); 
    log.debug("Starting software Install"); 
    titleView.setText("Installing Software Update"); 
    try{ 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File(fileName)), 
     "application/vnd.android.package-archive"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

} 
@Override 
public void onResume() { 
    super.onResume(); 
    log.debug("On Resume Software Install activity."); 
} 

@Override 
public void onPause(){ 
    super.onPause(); 
    log.debug("On Pause Software Install activity."); 
} 

} 

我面臨的問題是在我的試驗中很少有軟件安裝失敗,甚至沒有發生任何異常。這是非常罕見的情況,但我仍然想要處理它。那麼是否有任何方法可以確定安裝是否成功或者不成功,例如有什麼方法可以捕捉到以下給定線條的成功或失敗?

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File(fileName)), 
     "application/vnd.android.package-archive"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

任何幫助將不勝感激。提前致謝!

回答

0

使用startActivityForResult,該方式將能夠檢查響應。檢查: startActivityForResult

+0

startActivityForResult的問題是它始終返回0(失敗或成功)。檢查[this](http://stackoverflow.com/questions/6157567/install-apk-programmatically-return-value)。 – Exception

+0

您可以使用startActivityForResult(intent,requestCode)並檢查onActivityResult方法中的requestCode和數據。 –

+0

我試過了,但對於失敗和成功,requestCode和responseCode都是相同的,即responseCode是0,requestCode是我傳遞的整數 – Exception