2017-05-22 6 views
0

Ich versuche, diesen Code in meinem Android-App zu starten:java.io.FileNotFoundException, wenn sie versuchen GoogleCredential zu erstellen

public Bigquery createAuthorizedClient() throws IOException { 
    final List SCOPE = Arrays.asList("https://www.googleapis.com/auth/bigquery"); 
    HttpTransport transport = new NetHttpTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 
    GoogleCredential credential = new GoogleCredential(); 
    try{ 
     File file = new File("C:\\testprojectbigquery\\UkrBikeApp-ff55878cb577.p12"); 
     credential = new GoogleCredential.Builder().setTransport(transport) 
       .setJsonFactory(jsonFactory) 
       .setServiceAccountId("[email protected]") 
       .setServiceAccountScopes(SCOPE) 
       .setServiceAccountPrivateKeyFromP12File(file) 
       .build(); 
    } 
    catch (Exception e){ 
     System.out.println("e = " + e); 
    } 


    if (credential.createScopedRequired()) { 
     credential = credential.createScoped(BigqueryScopes.all()); 
    } 

    return new Bigquery.Builder(transport, jsonFactory, credential) 
      .setApplicationName("Bigquery Samples") 
      .build(); 
} 

Aber jedes Mal, wenn ich:

java.io.FileNotFoundException

dann habe ich versucht Input zu schaffen, aber dann nicht Situation ändern:

 AssetManager am = getAssets(); 
     InputStream inputStream = am.open("C:\\testprojectbigquery\\UkrBikeApp-ff55878cb577.p12"); 
     File file = createFileFromInputStream(inputStream); 

Antwort

1

Sie codieren für ein Android-Gerät, und Android hat keine C Laufwerk! Um diese Datei zu lesen, müssen Sie Ihre Datei in den Ordner "Assets" des Projekts einfügen und dann aus diesem Ordner lesen. Hier ist ein example of reading assets

+0

Danke für Ihre Antwort. Ich kann immer noch nicht finden, wie ich ein Dateiobjekt aus Assets lesen kann, um es in meinem GoogleCredential zu verwenden. Gibt es irgendeinen Weg? – DzouSi

+0

Um eine 'Datei' zu erhalten, können Sie die URL wie folgt verwenden:' file: /// android_asset/... 'wobei' ... 'der relative Pfad zu Ihrem Asset im Asset-Ordner ist. So können Sie versuchen: 'File file = new File (" file: ///android_asset/UkrBikeApp-ff55878cb577.p12 ");' mit der Datei 'UkrBikeApp-ff55878cb577.p12' in den Asset-Ordner putted. Für Sie [refer] (https://stackoverflow.com/questions/4820816/how-to-get-uri-from-an-asset-file) –

Verwandte Themen