2016-04-15 122 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