2016-11-30 77 views
1

應用程序文件夾中的文件,這是我的代碼:打開與fileOpener Ionic2

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); 

      }); 
    } 

} 

,但我不能訪問該文件app.apk這是在資產/ app.apk

和我得到的錯誤:

Status : 9 
Error : File Not Found 

它甚至可以訪問應用程序文件夾內的文件?

+0

插件上的文檔說; _這個插件會在你的設備文件系統上用它的默認應用程序打開一個文件。所以它看着你的設備文件系統而不是你的應用程序文件系統,所以不知道這個插件是否可以工作 –

+0

哦..那太傷心了......有什麼想法嗎?我怎麼能做到這一點? – ADiL

+0

我只能馬上想到,可能首先下載.apk文件到設備文件系統,然後運行你的代碼 –

回答

2

嗯,我做到了通過將應用程序從服務器獲取下載到我的手機創建一個本地文件夾,並立即安裝/自動,

這裏是萬一有人代碼別人需要的時候第一天:

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(); 
    }); 
    } 
} 

任何解釋只是問我。

+0

嗨2個問題,1你可以通過接受你的答案來關閉你的問題嗎? 2.你用什麼插件來安裝apk? – Ivaro18

+0

是的封閉謝謝。 插件是FileOpener,你只需打開手機內的apk,它會自動觸發安裝程序 – ADiL

0

那麼既然你想讓用戶下載.apk文件,您可以使用(在HTML)

<a href="assets/app.apk" download>Download apk</a>

但用戶必須手動打開他的下載量(或點擊彈出)到安裝你的應用。

我不知道是否有一個插件能夠安裝這些apk文件。 (谷歌搜索ionic 2 install external apk沒有返回任何結果)。