इस सेक्शन में, क्रॉस-प्रोफ़ाइल हैलो वर्ल्ड कॉल करने का तरीका बताया गया है आपका ऐप्लिकेशन. इससे आपको SDK टूल के बारे में जानकारी मिलेगी. साथ ही, लागू करने के लिए किया जा सकता है. आपको लगातार यह तरीका अपनाने का सुझाव दिया जाता है को डेवलप किया जा सकता है.
वर्क प्रोफ़ाइल के साथ टेस्ट डिवाइस सेट अप करें
Google ने DPC की जांच करने वाला ऐप्लिकेशन बनाया है, ताकि आपको मैनेज की जा रही अपने डिवाइस पर पर्यावरण को सुरक्षित रखने में मदद करता है. इससे वर्क प्रोफ़ाइल सेट अप हो जाएगी और आपको के साथ कुछ सुविधाओं को चालू या बंद करने के कंट्रोल मिलते हैं.
Test DPC ऐप्लिकेशन इंस्टॉल करें
Google Play Store खोलें और Test DPC ऐप्लिकेशन डाउनलोड करें.
कार्य प्रोफ़ाइल सेट अप करना
जब एक ऐप्लिकेशन इंस्टॉल हो जाता है, तो आपको डिवाइस पर दो आइकॉन दिखेंगे, एक पर क्लिक करें. सेटअप आइकॉन पर टैप करें और चरण पूरे करें.
अब आपके पास दो अलग-अलग प्रोफ़ाइल हैं, एक निजी ऐप्लिकेशन के लिए और दूसरी वर्क ऐप्लिकेशन के लिए. ऐप्लिकेशन सूची में सबसे ऊपर मौजूद टैब की मदद से, इनके बीच स्विच किया जा सकता है.
आपका ऐप्लिकेशन इंस्टॉल करते समय, यह सामान्य रूप से दोनों में अपने-आप इंस्टॉल हो जाएगा
प्रोफ़ाइल. अगर आपको कभी इसे साफ़ तौर पर वर्क प्रोफ़ाइल में इंस्टॉल करने की ज़रूरत पड़े, तो
adb इंस्टॉल के साथ --user
आर्ग्युमेंट का इस्तेमाल किया जा सकता है.
$ adb install --user [id number of profile] [path of apk file]
टेस्ट डिवाइस सेट अप करने के बारे में ज़्यादा जानने के लिए, यहां जाएं लिंक.
पक्का करें कि आपका ऐप्लिकेशन सही तरीके से कॉन्फ़िगर किया गया है
java 8 को चालू करें सहायता और पक्का करें कि आपका minSdk कम से कम 19 हो.
Gradle डिपेंडेंसी जोड़ना
dependencies {
annotationProcessor
'com.google.android.enterprise.connectedapps:connectedapps-processor:1.1.2'
implementation
'com.google.android.enterprise.connectedapps:connectedapps:1.1.2'
implementation
'com.google.android.enterprise.connectedapps:connectedapps-annotations:1.1.2'
}
हमने इस उदाहरण में गुआवा का इस्तेमाल किया है. हालांकि, ऐसा करने के लिए SDK टूल का इस्तेमाल करना ज़रूरी नहीं है, लेकिन
के साथ-साथ हैलो वर्ल्ड को भी फ़ॉलो करें,
api("com.google.guava:guava:29.0-android")
.
एक नई क्लास बनाएं, जिसमें आपका टेस्ट क्रॉस-प्रोफ़ाइल कॉल शामिल होगा
इसे बाद में और काम का बनाने के लिए, आपको इसे उसी पैकेज में रखना चाहिए जिसमें आप आपके असली क्रॉस-प्रोफ़ाइल कॉल जाने चाहिए.
public class HelloWorld {
@CrossProfile
public ListenableFuture<String> helloWorld() {
return Futures.immediateFuture("Hello world");
}
}
अगर आपको Guava for Futures से मिलने वाली सहायता पर निर्भर नहीं रहना है, तो फ़िलहाल यह काम करें और तो आख़िरी चरण देखें, जिससे आपको यह पता चलेगा कि कौनसे बदलाव करने हैं.
क्रॉस-प्रोफ़ाइल कॉल करें
इसे क्लास में किया जा सकता है. इसके लिए, आपको क्रॉस-प्रोफ़ाइल कॉल करने होंगे बाद में.
// TODO: inject/pass these into the class later instead.
CrossProfileConnector crossProfileConnector =
CrossProfileConnector.builder(this).build();
ProfileHelloWorld profileHelloWorld =
ProfileHelloWorld.create(crossProfileConnector);
ListenableFuture<Map<Profile, String>> resultsFuture =
profileHelloWorld.both().helloWorld();
FluentFuture.from(resultsFuture)
.addCallback(new FutureCallback<Map<Profile, String>>() {
@Override
public void onSuccess(Map<Profile, String> results) {
for (Profile profile : results.keySet()) {
Log.w("tag", "CROSS_PROFILE profile: " + profile.asInt()
+ "; result: " + results.get(profile));
}
}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Failed to say hello world on both profiles", t);
}
}, directExecutor());
SDK टूल को इंस्टेंस उपलब्ध कराएं
बेशक, ऊपर बताया गया helloWorld
तरीका कॉल जनरेट किया गया है
क्लास के कॉन्टेंट के बजाय असली क्लास का इस्तेमाल करें. अक्सर, आपकी असली क्लास सिंगलटन या अन्य
जटिल क्लास, जो डैगर जैसे डिपेंडेंसी इंजेक्शन फ़्रेमवर्क पर निर्भर करती हैं. यहां की यात्रा पर हूं
लॉजिक को दूसरी प्रोफ़ाइल में वास्तविक क्लास पर कॉल करने की अनुमति दें, प्रत्येक कस्टम
@CrossProfile
क्लास के पास, सेवा देने वाली कंपनी का इससे जुड़ा तरीका होना चाहिए
@CrossProfileProvider
क्लास. यह क्लास बनाएं.
public class HelloWorldProvider {
@CrossProfileProvider
public HelloWorld getHelloWorld() {
return new HelloWorld();
}
}
अतिरिक्त वायरिंग
कस्टम क्लास और मेथड के साथ काम करने के लिए, कोड जनरेट करने के लिए तो अतिरिक्त वायरिंग का इस्तेमाल किया जा सकता है. यह उन समस्याओं को हल करने के लिए और विज़िबिलिटी से जुड़ी ज़रूरी शर्तों को बड़े पैमाने पर तय करते हैं.
सबसे पहले, किसी मौजूदा या नई हाई-लेवल क्लास के बारे में
@CrossProfileConfiguration
. यह आपके प्रोवाइडर क्लास के बारे में है.
@CrossProfileConfiguration(providers = HelloWorldProvider.class)
abstract class HelloWorldConfiguration {}
दूसरा, अपने-आप जनरेट होने वाली सेवा को अपनी मेनिफ़ेस्ट फ़ाइल में जोड़ें.
<application> tag
. हो सकता है कि जब तक आपका प्रोजेक्ट न बने, यह समस्या हल न हो.
<service
android:name="com.google.android.enterprise.connectedapps.CrossProfileConnector_Service"
android:exported="false"/>
आखिर में, डेवलपमेंट के मकसद से, खुद को INTERACT_ACROSS_USERS
दें
अनुमति. अगर आपने इसे पहले से नहीं रखा है, तो इसे सेव नहीं किया जा सकेगा
प्रोडक्शन भी होता है, लेकिन यह शुरुआत करने का सबसे आसान तरीका है. सबसे पहले, इसे अपने
इस तरह मेनिफ़ेस्ट करें:
<uses-permission
android:name="android.permission.INTERACT_ACROSS_USERS"
tools:ignore="ProtectedPermissions"/>
इसके बाद, adb और कमांड लाइन से खुद को इस रूप में अनुमति दी जा सकती है (अगर आपके ऐप्लिकेशन में यह पहले से मौजूद नहीं है), तो नीचे दिया गया तरीका अपनाएं:
adb shell pm grant <your package> android.permission.INTERACT_ACROSS_USERS
अगर आप फ़्यूचर्स के लिए Guava पर निर्भर नहीं हो पा रहे थे, तो आपको बदलाव. सबसे पहले, "सभी को ध्यान में रखकर" जवाब देना स्ट्रिंग को सीधे कॉल किया जा सकता है. दूसरा, ये कॉल अब सिंक्रोनस होते हैं, इसलिए आपको क्रॉस-प्रोफ़ाइल कॉल और नतीजों को प्रिंट करने के लिए, कनेक्शन लिसनर.
जब आप ''एक क्रॉस-प्रोफ़ाइल कैलेंडर बनाएं'' के अंतर्गत सूचीबद्ध कोड चलाते हैं आपको यह देखना चाहिए ''नमस्ते दुनिया'' के लिए दो लॉग, हर प्रोफ़ाइल से एक लॉग. अगर आपको सिर्फ़ एक लॉग मिलता है, पक्का करें कि आपने अपना ऐप्लिकेशन दोनों प्रोफ़ाइलों में इंस्टॉल किया है और अनुमति.