求解,关于用Intent隐式调用ACTION_VIEW使程序崩溃
写的一个小程序,检测到新版本并自动升级安装新版本APK的时候,就会报错,然后程序只接崩溃.
错误代码:
07-12 14:57:28.915 29493-29493/com.newapp.dodocom.consolyc E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.newapp.dodocom.consolyc, PID: 29493
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///storage/sdcard0/mobilesafe.apk typ=application/vnd.android.package.archive flg=0x10000000 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
at android.app.Activity.startActivityForResult(Activity.java:3742)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
at android.app.Activity.startActivityForResult(Activity.java:3703)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871)
at android.app.Activity.startActivity(Activity.java:4013)
at android.app.Activity.startActivity(Activity.java:3981)
at com.newapp.dodocom.consolyc.SplashActivity.installApk(SplashActivity.java:248)
at com.newapp.dodocom.consolyc.SplashActivity.access$500(SplashActivity.java:35)
at com.newapp.dodocom.consolyc.SplashActivity$4$1.onSuccess(SplashActivity.java:132)
at com.newapp.dodocom.consolyc.SplashActivity$4$1.onSuccess(SplashActivity.java:120)
at net.tsz.afinal.http.HttpHandler.onProgressUpdate(HttpHandler.java:148)
at net.tsz.afinal.core.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:503)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5238)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:906)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:701)
安装APK的代码:
private void installApk(File t) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(t),"application/vnd.android.package.archive");
startActivity(intent);
}