[当我尝试此代码时,当我尝试为安装Fille路径时出现错误->内容,然后安装时出现“解析软件包时出现问题”错误。
此代码位于android studio中的update click事件中。
String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
String fileName = "battlegame.apk";
destination += fileName;
final Uri uri = Uri.parse("file://" + destination);
//Delete update file if exists
File file = new File(destination);
if (file.exists()){
file.delete();
}
String url = downloadurl;
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDescription("Updating....");
request.setTitle("Battle Game");
request.setDestinationUri(uri);
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
final long downloadId = manager.enqueue(request);
final String finalDestination = destination;
BroadcastReceiver onComplete = new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
Log.d("Update status", "Download completed "+uri.toString()+" id "+String.valueOf(downloadId));
Intent install = new Intent(Intent.ACTION_VIEW);
install.setDataAndType(Uri.fromFile(new File(finalDestination)),
"application/vnd.android.package-archive");
install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(install);
unregisterReceiver(this);
}
};
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
我的下载正常运行,但是安装应用程序无法正常工作。下面的错误我得到。我为此粘贴了logcat。
D/Update status: Download completed file:///storage/emulated/0/Download/battlegame.apk id 135 D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.di.battlegame, PID: 7344 java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=com.di.battlegame (has extras) } in com.di.battlegame.FirstActivity$1$2$1@c0b3ffb at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1560) at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: android.os.FileUriExposedException: file:///storage/emulated/0/Download/battlegame.apk exposed beyond app through Intent.getData() at android.os.StrictMode.onFileUriExposed(StrictMode.java:2083) at android.net.Uri.checkFileUriExposed(Uri.java:2388) at android.content.Intent.prepareToLeaveProcess(Intent.java:10791) at android.content.Intent.prepareToLeaveProcess(Intent.java:10744) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1703) at android.app.Activity.startActivityForResult(Activity.java:5192) at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676) at android.app.Activity.startActivityForResult(Activity.java:5150) at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663) at android.app.Activity.startActivity(Activity.java:5521) at android.app.Activity.startActivity(Activity.java:5489) at com.di.battlegame.FirstActivity$1$2$1.onReceive(FirstActivity.java:191) at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1550) at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) I/Process: Sending signal. PID: 7344 SIG: 9 Process 7344 terminated.
尝试使用文件提供程序后,我得到解析程序包时遇到问题
[当我尝试此代码时,当我尝试为安装Fille路径时会出现错误->内容,然后在安装时出现“解析软件包时出现问题”错误。此代码在...
从N开始,您无法将Uri file://公开给其他应用,请改用FileProvider。