Android
गूगल ड्राइव एपीआई
खोज…
परिचय
Google डिस्क Google द्वारा बनाई गई एक फ़ाइल होस्टिंग सेवा है। यह फ़ाइल भंडारण सेवा प्रदान करता है और उपयोगकर्ता को क्लाउड में फाइलें अपलोड करने की अनुमति देता है और अन्य लोगों के साथ भी साझा करता है। Google ड्राइव API का उपयोग करके, हम कंप्यूटर या मोबाइल डिवाइस और Google ड्राइव क्लाउड के बीच फ़ाइलों को सिंक्रनाइज़ कर सकते हैं।
टिप्पणियों
कानूनी
यदि आप अपने एप्लिकेशन में Google ड्राइव Android API का उपयोग करते हैं, तो आपको अपने एप्लिकेशन में "कानूनी नोटिस" अनुभाग के भाग के रूप में Google Play Services एट्रिब्यूशन टेक्स्ट को शामिल करना होगा।
यह अनुशंसा की जाती है कि आप एक स्वतंत्र मेनू आइटम के रूप में या "लगभग" मेनू आइटम के भाग के रूप में कानूनी नोटिस शामिल करें।
रनटाइम पर अटेंशन टेक्स्ट प्राप्त करने के लिए आप GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo()
कॉल कर सकते हैं।
Android में Google ड्राइव को एकीकृत करें
Google डेवलपर कंसोल पर एक नया प्रोजेक्ट बनाएं
एंड्रॉइड एप्लिकेशन को Google ड्राइव के साथ एकीकृत करने के लिए, Google डेवलपर्स कंसोल में प्रोजेक्ट की साख बनाएं। इसलिए, हमें Google डेवलपर कंसोल पर एक प्रोजेक्ट बनाने की आवश्यकता है।
Google डेवलपर कंसोल पर एक प्रोजेक्ट बनाने के लिए, इन चरणों का पालन करें:
Android के लिए Google डेवलपर कंसोल पर जाएं। इनपुट क्षेत्र में अपने प्रोजेक्ट का नाम भरें और Google डेवलपर कंसोल पर एक नया प्रोजेक्ट बनाने के लिए create बटन पर क्लिक करें।
हमें API तक पहुंचने के लिए क्रेडेंशियल्स बनाने की आवश्यकता है। इसलिए क्रिएट क्रेडेंशियल्स बटन पर क्लिक करें।
अब, एक पॉप विंडो खुलेगी। एपीआई कुंजी बनाने के लिए सूची में एपीआई कुंजी विकल्प पर क्लिक करें।
Android के लिए Google API को कॉल करने के लिए हमें एक API कुंजी की आवश्यकता है। तो, अपने Android प्रोजेक्ट की पहचान करने के लिए Android कुंजी पर क्लिक करें।
अगला, हमें एपीआई कुंजी बनाने के लिए इनपुट फ़ील्ड में एंड्रॉइड प्रोजेक्ट का पैकेज नाम और SHA-1 फिंगरप्रिंट जोड़ना होगा।
हमें SHA-1 फिंगरप्रिंट जेनरेट करना होगा। इसलिए, अपना टर्मिनल खोलें और SHA1 फिंगरप्रिंट प्राप्त करने के लिए Keytool उपयोगिता चलाएं । Keytool उपयोगिता को चलाते समय, आपको कीस्टोर पासवर्ड प्रदान करने की आवश्यकता होती है। डिफ़ॉल्ट विकास keytool पासवर्ड "Android" है ।
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v
अब, क्रेडेंशियल पेज पर इनपुट फ़ील्ड में पैकेज नाम और SHA-1 फिंगरप्रिंट जोड़ें। अंत में, एपीआई कुंजी बनाने के लिए क्रिएट बटन पर क्लिक करें।
यह Android के लिए API कुंजी बनाएगा। हम Google ड्राइव के साथ Android एप्लिकेशन को एकीकृत करने के लिए इस एपीआई कुंजी का उपयोग करेंगे।
Google डिस्क API सक्षम करें
हमें Google डिस्क को Android एप्लिकेशन से Google ड्राइव पर संग्रहीत फ़ाइलों तक पहुंचने में सक्षम करने की आवश्यकता है। Google डिस्क API को सक्षम करने के लिए, निम्न चरणों का पालन करें:
अपने Google डेवलपर कंसोल डैशबोर्ड पर जाएं और सक्षम एपीआई पर क्लिक करें जैसे कुंजियों को क्रेडेंशियल्स प्राप्त करें फिर आपको लोकप्रिय Google एपीआई दिखाई देगा।
Google डिस्क API के सिंहावलोकन पृष्ठ को खोलने के लिए ड्राइव एपीआई लिंक पर क्लिक करें।
Google ड्राइव API सक्षम करने के लिए सक्षम करें बटन पर क्लिक करें। यह क्लाइंट को Google ड्राइव तक पहुंचने की अनुमति देता है।
इंटरनेट अनुमति जोड़ें
ऐप को इंटरनेट एक्सेस Google ड्राइव फ़ाइलों की आवश्यकता है। AndroidManifest.xml फ़ाइल में इंटरनेट अनुमतियां सेट करने के लिए निम्न कोड का उपयोग करें:
<uses-permission android:name="android.permission.INTERNET" />
Google Play सेवाएँ जोड़ें
हम Google play services API का उपयोग करेंगे जिसमें Google Drive Android API शामिल है । इसलिए, हमें Google Play सेवाओं एसडीके को एंड्रॉइड एप्लिकेशन में सेटअप करना होगा। अपनी build.gradle
(ऐप मॉड्यूल) फ़ाइल खोलें और निर्भरता के रूप में Google play सेवाएं SDK जोड़ें।
dependencies {
....
compile 'com.google.android.gms:play-services:<latest_version>'
....
}
मैनिफ़ेस्ट फ़ाइल में API कुंजी जोड़ें
एंड्रॉइड एप्लिकेशन में Google एपीआई का उपयोग करने के लिए, हमें Google Play सेवा के API कुंजी और संस्करण को AndroidManifest.xml फ़ाइल में जोड़ना होगा। AndroidManifest.xml फ़ाइल के टैग के अंदर सही मेटाडेटा टैग जोड़ें।
Google डिस्क Android API को कनेक्ट और अधिकृत करें
हमें Google डिस्क Android API को Android एप्लिकेशन से प्रमाणित और कनेक्ट करना होगा। Google ड्राइव Android API का प्राधिकरण GoogleApiClient द्वारा नियंत्रित किया जाता है। हम onResume () पद्धति के भीतर GoogleApiClient का उपयोग करेंगे।
/**
* Called when the activity will start interacting with the user.
* At this point your activity is at the top of the activity stack,
* with user input going to it.
*/
@Override
protected void onResume() {
super.onResume();
if (mGoogleApiClient == null) {
/**
* Create the API client and bind it to an instance variable.
* We use this instance as the callback for connection and connection failures.
* Since no account name is passed, the user is prompted to choose.
*/
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
mGoogleApiClient.connect();
}
Google Deive Android API को डिस्कनेक्ट करें
जब गतिविधि बंद हो जाती है, हम गतिविधि के onStop () विधि के अंदर डिस्कनेक्ट () विधि को कॉल करके Android एप्लिकेशन के साथ Google डिस्क Android API कनेक्शन काट देंगे ।
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient != null) {
// disconnect Google Android Drive API connection.
mGoogleApiClient.disconnect();
}
super.onPause();
}
कनेक्शन कॉलबैक लागू करें और कनेक्शन विफल श्रोता
हम Google API क्लाइंट के कनेक्शन के बारे में स्थिति जानने के लिए कनेक्शन कॉलबैक और Google API क्लाइंट के कनेक्शन विफल श्रोता को MainActivity.java फ़ाइल में कार्यान्वित करेंगे। ये श्रोता ऐप और ड्राइव के बीच कनेक्शन की समस्याओं को संभालने के लिए ऑनकनेक्टेड (), ऑनकॉन्फेक्शनफेल्ड (), ऑनकनेक्शनसुस्पेंडेड () विधि प्रदान करते हैं।
यदि उपयोगकर्ता ने एप्लिकेशन को अधिकृत किया है, तो ऑनकनेक्टेड () विधि लागू की जाती है। यदि उपयोगकर्ता ने एप्लिकेशन को अधिकृत नहीं किया है, तो onConnectionFailed () विधि लागू की जाती है और उपयोगकर्ता को एक संवाद दिखाया जाता है कि आपका ऐप Google ड्राइव तक पहुंचने के लिए अधिकृत नहीं है। मामले में कनेक्शन निलंबित है, onConnectionSuspended () विधि कहा जाता है।
आपको अपनी गतिविधि में ConnectionCallbacks और OnConnectionFailedListener को लागू करने की आवश्यकता है। अपनी जावा फ़ाइल में निम्न कोड का उपयोग करें।
@Override
public void onConnectionFailed(ConnectionResult result) {
// Called whenever the API client fails to connect.
Log.i(TAG, "GoogleApiClient connection failed:" + result.toString());
if (!result.hasResolution()) {
// show the localized error dialog.
GoogleApiAvailability.getInstance().getErrorDialog(this, result.getErrorCode(), 0).show();
return;
}
/**
* The failure has a resolution. Resolve it.
* Called typically when the app is not yet authorized, and an authorization
* dialog is displayed to the user.
*/
try {
result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION);
} catch (SendIntentException e) {
Log.e(TAG, "Exception while starting resolution activity", e);
}
}
/**
* It invoked when Google API client connected
* @param connectionHint
*/
@Override
public void onConnected(Bundle connectionHint) {
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
}
/**
* It invoked when connection suspended
* @param cause
*/
@Override
public void onConnectionSuspended(int cause) {
Log.i(TAG, "GoogleApiClient connection suspended");
}
Google ड्राइव पर एक फ़ाइल बनाएँ
हम Google डिस्क पर एक फ़ाइल जोड़ देंगे। हम Google डिस्क पर प्रोग्राम बनाने के लिए Drive
ऑब्जेक्ट के createFile()
विधि का उपयोग करेंगे। इस उदाहरण में हम उपयोगकर्ता के मूल फ़ोल्डर में एक नई पाठ फ़ाइल जोड़ रहे हैं। जब कोई फ़ाइल जोड़ी जाती है, तो हमें मेटाडेटा, फ़ाइल सामग्री और मूल फ़ोल्डर के प्रारंभिक सेट को निर्दिष्ट करने की आवश्यकता होती है।
हमें एक CreateMyFile()
कॉलबैक विधि बनाने की आवश्यकता है और इस विधि के भीतर, DriveContents
संसाधन को पुनः प्राप्त करने के लिए Drive
ऑब्जेक्ट का उपयोग करें। फिर हम की API क्लाइंट पारित Drive
वस्तु और फोन driveContentsCallback
के हत्थे परिणाम को कॉलबैक विधि DriveContents
।
DriveContents
संसाधन में फ़ाइल की बाइनरी स्ट्रीम की एक अस्थायी प्रतिलिपि होती है जो केवल एप्लिकेशन के लिए उपलब्ध होती है।
public void CreateMyFile(){
fileOperation = true;
// Create new contents resource.
Drive.DriveApi.newDriveContents(mGoogleApiClient)
.setResultCallback(driveContentsCallback);
}
ड्राइवकंटेंट्स का रिजल्ट हैंडलर
प्रतिक्रिया को संभालने के लिए यह जांचने की आवश्यकता है कि कॉल सफल था या नहीं। यदि कॉल सफल रहा, तो हम DriveContents
संसाधन को पुनः प्राप्त कर सकते हैं।
हम DriveContents
का एक परिणाम हैंडलर DriveContents
। इस पद्धति के भीतर, हम CreateFileOnGoogleDrive()
विधि को कॉल करते हैं और DriveContentsResult
का परिणाम पास करते हैं:
/**
* This is the Result result handler of Drive contents.
* This callback method calls the CreateFileOnGoogleDrive() method.
*/
final ResultCallback<DriveContentsResult> driveContentsCallback =
new ResultCallback<DriveContentsResult>() {
@Override
public void onResult(DriveContentsResult result) {
if (result.getStatus().isSuccess()) {
if (fileOperation == true){
CreateFileOnGoogleDrive(result);
}
}
}
};
प्रोग्राम बनाएँ फ़ाइल
फ़ाइलें बनाने के लिए, हमें MetadataChangeSet
ऑब्जेक्ट का उपयोग करना होगा। इस ऑब्जेक्ट का उपयोग करके, हम शीर्षक (फ़ाइल नाम) और फ़ाइल प्रकार सेट करते हैं। साथ ही, हमें DriveFolder
वर्ग की createFile()
पद्धति का उपयोग करना चाहिए और एक फ़ाइल बनाने के लिए Google क्लाइंट API, MetaDataChangeSet
ऑब्जेक्ट और driveContents
करना होगा। हम निर्मित फ़ाइल के परिणाम को संभालने के लिए परिणाम हैंडलर कॉलबैक कहते हैं।
उपयोगकर्ता के मूल फ़ोल्डर में एक नई टेक्स्ट फ़ाइल बनाने के लिए हम निम्नलिखित कोड का उपयोग करते हैं:
/**
* Create a file in the root folder using a MetadataChangeSet object.
* @param result
*/
public void CreateFileOnGoogleDrive(DriveContentsResult result){
final DriveContents driveContents = result.getDriveContents();
// Perform I/O off the UI thread.
new Thread() {
@Override
public void run() {
// Write content to DriveContents.
OutputStream outputStream = driveContents.getOutputStream();
Writer writer = new OutputStreamWriter(outputStream);
try {
writer.write("Hello Christlin!");
writer.close();
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("My First Drive File")
.setMimeType("text/plain")
.setStarred(true).build();
// Create a file in the root folder.
Drive.DriveApi.getRootFolder(mGoogleApiClient)
.createFile(mGoogleApiClient, changeSet, driveContents)
setResultCallback(fileCallback);
}
}.start();
}
निर्मित फ़ाइल का हैंडल परिणाम
निम्न कोड बनाई गई फ़ाइल के परिणाम को संभालने के लिए एक कॉलबैक विधि बनाएगा:
/**
* Handle result of Created file
*/
final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
ResultCallback<DriveFolder.DriveFileResult>() {
@Override
public void onResult(DriveFolder.DriveFileResult result) {
if (result.getStatus().isSuccess()) {
Toast.makeText(getApplicationContext(), "file created: "+
result.getDriveFile().getDriveId(), Toast.LENGTH_LONG).show();
}
return;
}
};