Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:为什么下载管理器会在Android中自动运行(下载)apk文件?_Android_Broadcastreceiver_Download Manager - Fatal编程技术网

Android:为什么下载管理器会在Android中自动运行(下载)apk文件?

Android:为什么下载管理器会在Android中自动运行(下载)apk文件?,android,broadcastreceiver,download-manager,Android,Broadcastreceiver,Download Manager,问题是,使用此方法从服务器下载.apk文件后: public void Update(String apkName) { DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); File file = new File("/sdcard/Download/"+ apkName + ".apk"); if (file.exists()) { file.de

问题是,使用此方法从服务器下载.apk文件后:

public void Update(String apkName) {
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

    File file = new File("/sdcard/Download/"+ apkName + ".apk");
    if (file.exists()) {
        file.delete();
    }

    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS + "/", apkName + ".apk");       
    DownloadManager manager = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
    manager.enqueue(request);
}
然后,当下载操作完成时,我使用BroadcastReceiver执行安装操作,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
// some codes here...

BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();

            if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)){
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/Download/" + apkName + ".apk")),
                        "application/vnd.android.package-archive");
                startActivity(i);
            } else {

            }

        }
    };

    getActivity().registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

    download_apk(apkName);
    return rootView;
}
现在的问题是,当下载操作完成后,DownloadManager尝试安装apk文件,我得到的结果是解析错误/解析包时出现问题

单击“确定”后,将显示由BroadcastReceiver触发的true安装页面

我在活动中运行这个过程,它非常好。正如你在上面看到的,这次它是一个碎片!这可能是原因吗

如何停止DownloadManager自动运行apk? 有人能帮我吗

为什么下载管理器会在android中自动运行下载的apk文件

下载管理器不会自动启动下载APK

如何停止DownloadManager自动运行apk


显然,您不理解您在问题中粘贴的代码,所以将接收到与APK有关的内容。只要删除它和它的注册,您就完成了。

解析错误意味着检查您的minSdk和TargetSdkversion@MD:我做了,没关系。我的设备是kitkat 4.4,minSDK是13targetsdk是whta?我做了,出现了解析错误。接受者做得很好。我需要停止第一次运行,这是如何执行的。这是由广播接收器的startActivity完成的。所以它要么做得很好,在这种情况下你的问题是什么,要么你需要摆脱它来停止自动安装。正如你看到我的代码上面,我只运行一次apk,但下载apk后它运行两次:第一个失败,第二个成功。我需要知道第一次跑步是如何发生的,并摆脱它。