Google ड्राइव एपीआई - एंड्रॉइड - ड्राइव फ़ाइल आईडी कैसे प्राप्त करें?

Mariano Gonzalez 11/24/2014. 3 answers, 6.448 views
android android google-drive-sdk google-drive-sdk google-drive-android-api google-drive-android-api

मैं एक एंड्रॉइड ऐप विकसित करने की कोशिश कर रहा हूं जो मेरे Google ड्राइव फ़ोल्डर में संग्रहीत एक एक्सएमएल फ़ाइल पढ़ सकता है, पहले विचार फ़ाइल खोलने और सामग्री को संभालने का प्रयास कर रहा है।

मैंने एंड्रॉइड के लिए Google ड्राइव एपीआई दस्तावेज़ पढ़े हैं और मैं एक बिंदु पर पहुंच गया हूं कि मैं खो गया हूं, यह फ़ाइल सामग्री के साथ काम कर रहा है।

इस गाइड के अनुसार ड्राइव से फ़ाइल खोलने का तरीका यह है:

DriveFile file = ...
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null).setResultCallback(contentsOpenedCallback);` 

खोजना मुझे एहसास हुआ कि पूरा कोड (जिसमें वे शामिल नहीं हैं):

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,DriveId.bg(id));
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null).setResultCallback(contentsOpenedCallback);` 

वैसे समस्या यह है कि मुझे फ़ाइल "आईडी" नहीं पता है। मैंने Google ड्राइव के वेब लिंक से आईडी की कोशिश की है, इस तरह कुछ ( https://drive.google.com/open ? Id = 1EafJ-T6H4xI9VaUuUO5FMVb9Y30xyr7OHuISQ53avso और authuser = 0) लेकिन काम नहीं किया।

1 Comments
Shailendra 12/06/2015
आप newOpenFileActivityBuilder API का उपयोग कर ड्राइव फ़ाइल पिकर खोलने का प्रयास कर सकते हैं जो उपयोगकर्ता को ड्राइव फ़ाइल चुनने की अनुमति देता है। उस एपीआई कॉल का कॉलबैक आपको चुनी हुई फाइल का ड्राइवआईडी वापस कर देगा और फिर आप सामग्री को अभी भी प्राप्त कर सकते हैं। Developers.google.com/drive/android पर developers.google.com/drive/android/intro#files और 'फ़ाइल खोलें' कोड देखें

3 Answers


Rivero 11/27/2015.

किसी विशिष्ट फ़ाइल के बारे में कोई जानकारी पुनर्प्राप्त करने के लिए आप ड्राइवएपीआई क्वेरी विधि का उपयोग कर सकते हैं। आपको एक क्वेरी ऑब्जेक्ट को निम्नलिखित के रूप में परिभाषित करने की आवश्यकता होगी:

Query query = new Query.Builder()
    .addFilter(Filters.eq(SearchableField.TITLE, "HelloWorld.java"))
    .build(); 

और परिणामों पर पुन: प्रयास करने के लिए कॉलबैक फ़ंक्शन सेट करें:

Drive.DriveApi.query(googleApiClient, query)
        .setResultCallback(new OnChildrenRetrievedCallback() {

    @Override
    public void onChildrenRetrieved(MetadataBufferResult result) {
        // Iterate over the matching Metadata instances in mdResultSet
    }
}); 

आप यहां विषय पर अधिक जानकारी प्राप्त कर सकते हैं: https://developers.google.com/drive/android/queries


Mariano Gonzalez 12/04/2014.

इस समस्या के लिए मैंने जो समाधान पाया वह ऐप से फाइल बना रहा था। Google ड्राइव एपीआई डेमो ऐप से कक्षा ( "CreateFileActivity.java" ) का उपयोग करना।

इस कक्षा के साथ मैं वैश्विक ड्राइवआईडी चर में नई फ़ाइल से रिटर्निंग ड्राइविड को सहेजता हूं।

final private ResultCallback fileCallback = new
        ResultCallback() {
            @Override
            public void onResult(DriveFolder.DriveFileResult result) {
                if (!result.getStatus().isSuccess()) {
                    Log.e("","Error while trying to create the file");
                    return;
                }
                Id=result.getDriveFile().getDriveId();
                Log.e("","Created a file with content: " + Id);

            }
        }; 

फिर इस आईडी के साथ किसी अन्य विधि में मैं फ़ाइल को कॉल करता हूं और इसे पढ़ता हूं (अगर मैं चाहता हूं कि मैं Google ड्राइव वेब ऐप से इस फ़ाइल की जानकारी को संपादित कर सकता हूं):

public void leer(){
       DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(),Id);
       file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
               .setResultCallback(contentsOpenedCallback);
   }
ResultCallback contentsOpenedCallback =
        new ResultCallback() {
            @Override
            public void onResult(DriveApi.DriveContentsResult result) {
                if (!result.getStatus().isSuccess()) {
                    Log.e("Error:","No se puede abrir el archivo o no se encuentra");
                    return;
                }
                // DriveContents object contains pointers
                // to the actual byte stream
                DriveContents contents = result.getDriveContents();
                BufferedReader reader = new BufferedReader(new InputStreamReader(contents.getInputStream()));
                StringBuilder builder = new StringBuilder();
                String line;
                try {
                    while ((line = reader.readLine()) != null) {
                        builder.append(line);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                String contentsAsString = builder.toString();
                Log.e("RESULT:",contentsAsString);
            }
        }; 
2 comments
Achin 06/15/2016
यह सबसे अच्छा समाधान है :)
Achin 06/18/2016
लेकिन मैं एक ही फाइल की सामग्री को कैसे संपादित कर सकता हूं, कृपया आप कुछ कोड पोस्ट कर सकते हैं?

seanpj 05/23/2017.

मैं कुछ महीने पहले इस सामान के साथ खेल रहा हूं, और अभी भी गिटूब पर कुछ कोड है। यह VERY outdated हो सकता है (libver 15 या तो), लेकिन यह संदर्भ बिंदु के रूप में कार्य कर सकता है, और यह है (मुझे सरल उम्मीद है)। यहाँ देखो इसे नीचे खींचें, प्लग इन करें, चरणबद्ध करें। ठीक करें जो अब काम नहीं कर रहा है :-)। मैंने इसे कुछ समय पहले छोड़ दिया है।

इस तथ्य से अवगत रहें कि Google ड्राइव एंड्रॉइड एपीआई ऑब्जेक्ट्स के लिए 2 अलग-अलग आईडी हैं, SO 22841237 देखें।

आम तौर पर, आप आमतौर पर फ़ाइल / फ़ोल्डर नाम जानने के साथ शुरू करते हैं, ऑब्जेक्ट्स की सूची प्राप्त करने के लिए जीडीएए से पूछताछ करें। उनमें से प्रत्येक ड्राइवआईडी और संसाधन आईडी उत्पन्न करेगा। ऑब्जेक्ट्स में हेरफेर करने के लिए ड्राइवआईड का उपयोग आपके ऐप में किया जाता है (इसका मतलब आपके एंड्रॉइड ऐप और / या डिवाइस के बाहर कुछ भी नहीं है)। संसाधन आईडी वह स्ट्रिंग है जो यूआरएल में विभिन्न रूपों में दिखाई देती है और आपके ऐप के बाहर इस्तेमाल की जा सकती है (उदाहरण के लिए वेब ब्राउजर ...)। इस रैपर को कुछ महसूस करने के लिए देखो कि यह कैसे काम करता है। लेकिन फिर, यह कुछ संस्करण वापस आ गया है, इसलिए कोई गारंटी नहीं है। शुभ लाभ...

Related questions

Hot questions

Language

Popular Tags