【问题标题】:Open a file within the app folder with fileOpener Ionic2使用 fileOpener Ionic2 在 app 文件夹中打开一个文件
【发布时间】:2016-11-30 14:34:18
【问题描述】:

这是我的代码:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { FileOpener } from 'ionic-native';

@Component({
  selector: 'page-installHelper',
  templateUrl: 'installHelper.html'
})
export class InstallHelper {

  constructor(public navCtrl: NavController) {
              FileOpener.open('assets/app.apk', 'application/vnd.android.package-archive').then(
      function(){

          console.log("success");

          }, function(err){

              console.log("status : "+err.status);
              console.log("error : "+err.message);

          });
  }

}

但我无法访问 assets/app.apk 中的文件 app.apk

我得到了错误:

Status : 9
Error : File Not Found

甚至可以访问应用文件夹中的文件吗?

【问题讨论】:

  • 插件上的文档说; 此插件将使用其默认应用程序在您的设备文件系统上打开一个文件。因此它会查看您的设备文件系统而不是您的应用程序文件系统,因此不确定此插件是否可以工作
  • 哦 .. 太伤心了...所以有什么想法吗?我该怎么做?
  • 我唯一能立即想到的,可能是先将 .apk 文件下载到设备文件系统,然后运行您的代码

标签: android ionic2 fileopener2


【解决方案1】:

我通过将应用程序从服务器下载到我在手机中创建的本地文件夹并立即/自动安装它来做到这一点,

这是代码以防万一有人需要它:

import { Component } from '@angular/core';
import { Platform, LoadingController } from 'ionic-angular';
import { StatusBar, Splashscreen } from 'ionic-native';
import { FileOpener } from 'ionic-native';
import { File } from 'ionic-native';
import { Transfer } from 'ionic-native';
import { HomePage } from '../pages/home/home';
declare var cordova: any;


@Component({
  template: `<ion-nav [root]="rootPage"></ion-nav>`
})
export class MyApp {
  rootPage = HomePage;

  constructor(platform: Platform, public loadingCtrl: LoadingController) {
      let me = this;
    platform.ready().then(() => {

      let loading = me.loadingCtrl.create({
        content: 'Preparing The App ...'
      });
      loading.present();
      File.createDir(cordova.file.externalDataDirectory, "appFolder", true).then(function(link){ 

          const fileTransfer = new Transfer();
          let url = 'http://yourserverhere.com/app.apk';
          fileTransfer.download(url, cordova.file.externalDataDirectory +"appFolder/app.apk").then((entry) => {
            loading.dismiss();
            FileOpener.open(entry.toURL(), "application/vnd.android.package-archive").then(
              function(){
                 console.log("success");
              },function(err){
                  console.log("status : "+err.status);
                  console.log("error : "+err.message);
              });
          }, (error) => {
            console.log(error);
          });

      },function(error){
          console.log(error);
      });


      StatusBar.styleDefault();
      Splashscreen.hide();
    });
  }
}

任何解释都可以问我。

【讨论】:

  • 您好 2 个问题,1 您可以通过接受您的回答来结束您的问题吗? 2.你用什么插件来安装apk?
  • 是的,谢谢。插件是FileOpener,你只需要在手机里面打开apk,它就会自动触发安装程序
  • 您好,我收到了成功回调,但文件没有在视觉上打开(不要求我安装打开的 apk)
【解决方案2】:

既然您希望用户下载 .apk 文件,您可以使用(在您的 html 中)

&lt;a href="assets/app.apk" download&gt;Download apk&lt;/a&gt;

但是用户必须手动打开他的下载(或点击弹出窗口)才能安装您的应用。

我不知道是否有插件可以安装这些apk 文件。 (谷歌搜索ionic 2 install external apk 没有返回任何结果)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2012-10-28
    • 1970-01-01
    • 2014-08-13
    • 2013-06-29
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多