以编程方式执行安装时出现安装失败
问题描述:
我有一个扎根的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);
任何帮助将不胜感激。提前致谢!
startActivityForResult的问题是它始终返回0(失败或成功)。检查[this](http://*.com/questions/6157567/install-apk-programmatically-return-value)。 – Exception
您可以使用startActivityForResult(intent,requestCode)并检查onActivityResult方法中的requestCode和数据。 –
我试过了,但对于失败和成功,requestCode和responseCode都是相同的,即responseCode是0,requestCode是我传递的整数 – Exception