【问题标题】:How download an installed app with nanohttpd如何使用 nanohttpd 下载已安装的应用程序
【发布时间】:2021-08-29 07:41:25
【问题描述】:

您好,我想用 nanohttpd 制作一个显示已安装应用程序的 http 服务器,并将它们转换为 apk 并下载。我可以列出,但我如何下载我选择的应用程序

List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA;
for (ApplicationInfo packageInfo : packages) {

        String name = String.valueOf(packageManager.getApplicationLabel(packageInfo));
        if (name.isEmpty()) {
            name = packageInfo.packageName;
        }
        Drawable icon = packageManager.getApplicationIcon(packageInfo);
        String apkPath = packageInfo.sourceDir;
        apps.add(new App(name, apkPath, icon, packageInfo.packageName));
}

if (method.equals(Method.GET)) {
    for (App file : apps) {

        answer += "<a href=\"" + file.getAppName()
                + "\" alt = \"\">" + file.getAppName()
                + "</a><br>";
    }

     

【问题讨论】:

    标签: java http nanohttpd


    【解决方案1】:

    好的,我基本上在列出应用程序后获取 url,然后检查哪个应用程序名称等于 url,然后我开始像这样下载它

     if (method.equals(Method.GET)) {
                if (a) {
                    answer = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; " +
                            "charset=utf-8\"><title> HTTP File Browser</title>";
                    for (App file : appShare) {
                        answer += "<a href=\"" + file.getAppName()
                                + "\" alt = \"\">" + file.getAppName()
                                + "</a><br>";
                    }
                    answer += "</head></html>";
                    if(blabla.equals(header.get("referer"))){
                        a=false;
                    }
    
                } else {
                    for (int i = 0; i < appShare.size(); i++) {
                        if (appShare.get(i).getAppName().equals(appnames))
                            arrayC = i;
                    }
                    answer = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; " +
                            "charset=utf-8\"><title> Download " + appShare.get(arrayC).getAppName() + "</title>";
                    // serve file download
                    InputStream inputStream;
                    Response response = null;
    
                    if (mStatusUpdateListener != null) {
                        mStatusUpdateListener.onDownloadingFile(
                                new File(appShare.get(arrayC).getApkPath()), false);
                    }
    
                    try {
                        inputStream = new FileInputStream(
    
                                new File(appShare.get(arrayC).getApkPath()));
                        response = new DownloadResponse(
    
                                new File(appShare.get(arrayC).getApkPath()), inputStream);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }            response.addHeader(
                            "Content-Disposition", "attachment; filename=" + appShare.get(arrayC).getAppName()+".apk");
                    return response;
    
    
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2019-05-14
      • 2015-04-08
      • 1970-01-01
      • 2014-03-22
      相关资源
      最近更新 更多