पिछले कुछ दिनों से, मैं तत्काल इन-ऐप अपडेट कार्यक्षमता को लागू करने की कोशिश कर रहा हूं, जो ठीक काम करता है, लेकिन ऐसा लगता है कि मैं परिणाम कोड को संभालने में असमर्थ हूं (उदाहरण के लिए उपयोगकर्ता अपडेट को रद्द कर देता है) - onActivityResult ( ) क्योंकि विधि को बिल्कुल नहीं कहा जाता है।

कुछ झुकाव के बाद मुझे एहसास हुआ कि अद्यतन को अस्वीकार करने के बाद, onActivityResult() को कॉल किया जाता है, लेकिन मूल गतिविधि के लिए, उस टुकड़े को नहीं जहां मुझे परिणाम को संभालने की आवश्यकता होती है, जो समझ में आता है।

मैं डिफ़ॉल्ट उदाहरण से कोड का उपयोग कर रहा हूं, यह सिर्फ एक टुकड़ा अंश है, क्योंकि कोड आरएक्स पर्यवेक्षक तर्क में लपेटा गया है।

appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
    appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE,
        fragment.activity, UPDATER_REQUEST_CODE)
}


// Trying to handle the in-app update activity result in here with no luck
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == UPDATER_REQUEST_CODE) {
        // Log onActivityResult() result code
    }
}

क्या कोई ऐसा मौका है, जिसने उसी समस्या पर ठोकर खाई हो?

बहुत पहले से धन्यवाद दोस्तों।

2
zadek 1 पद 2020, 14:38

2 जवाब

सबसे बढ़िया उत्तर

मुझे दस्तावेज़ीकरण में गहराई से गोता लगाने के बाद समाधान मिला, जहां यह कहा गया है कि विभिन्न तर्कों के साथ startUpdateFlowForResult() विधि का उपयोग किया जाना चाहिए।

https://developer.android.com/reference/com/google/android/play/core/appupdate/AppUpdateManager

यदि आप किसी गतिविधि से भिन्न घटक से प्रवाह शुरू कर रहे हैं और आप गतिविधि पर onActivityResult कॉल प्राप्त नहीं करना चाहते हैं तो इस विधि को कॉल किया जाना चाहिए।

उदाहरण के लिए, आप इसे androidx.fragment.app.Fragment के लिए उपयोग कर सकते हैं:

तो ट्रिक यह है कि इसका इस्तेमाल करें

startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, fragment::startIntentSenderForResult, UPDATER_REQUEST_CODE)

इसके अलावा

startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, fragment.activity, UPDATER_REQUEST_CODE)
0
zadek 1 पद 2020, 15:02

मेरी जानकारी के अनुसार

OnActivtyResult () फ्रैगमेंट में नहीं गतिविधि में कॉल करेगा

कृपया अपने कोड onActivityResult() को Fragment की होस्टिंग गतिविधि में स्थानांतरित करें।

मुझे बताएं कि क्या इससे आपकी समस्या का समाधान होता है।

अधिक जानकारी के लिए आप इस लिंक का अनुसरण कर सकते हैं

0
Nadim Ansari 1 पद 2020, 14:54