पैकेज दिखने के तरीके की जांच करें

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

इस गाइड में, व्यवहार में होने वाले बदलावों की जांच करने के बारे में कुछ सुझाव भी दिए गए हैं. साथ ही, लॉग मैसेज को कॉन्फ़िगर करने में मदद की गई है, ताकि ज़्यादा बारीकी से यह पता लगाया जा सके कि आपके ऐप्लिकेशन पर क्या असर पड़ सकता है.

व्यवहार में हुए बदलावों की जांच करना

यह जांचने के लिए कि इस बदलाव का आपके ऐप्लिकेशन पर असर पड़ता है या नहीं, यह तरीका अपनाएं:

  1. Android Studio 3.6.1 या इसके बाद का वर्शन इंस्टॉल करें.
  2. Gradle का वह नया वर्शन इंस्टॉल करें जो Android Studio के साथ काम करता है.
  3. अपने ऐप्लिकेशन के targetSdkVersion को 30 या इसके बाद के वर्शन पर सेट करें.
  4. अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में <queries> एलिमेंट को शामिल न करें.
  5. getInstalledApplications() या getInstalledPackages() पर कॉल करें. दोनों तरीकों से, फ़िल्टर की गई सूची मिलती है.
  6. देखें कि आपके ऐप्लिकेशन की कौनसी सुविधाएं काम नहीं कर रही हैं.
  7. उन सुविधाओं को ठीक करने के लिए, सही <queries> एंट्री डालें.

पैकेज फ़िल्टर करने के लिए, लॉग मैसेज कॉन्फ़िगर करना

ऐप्लिकेशन की डिफ़ॉल्ट विज़िबिलिटी आपके ऐप्लिकेशन पर कैसे असर डालती है, इस बारे में ज़्यादा जानने के लिए, पैकेज फ़िल्टर करने के लिए लॉग मैसेज चालू किए जा सकते हैं. अगर Android Studio में कोई टेस्ट ऐप्लिकेशन या डीबग करने लायक ऐप्लिकेशन डेवलप किया जा रहा है, तो सिस्टम लॉग आपको यह सुविधा देता है. इसके अलावा, टर्मिनल विंडो में यह कमांड चलाकर, इसे मैन्युअल तरीके से चालू किया जा सकता है:

adb shell pm log-visibility --enable PACKAGE_NAME

इसके बाद, जब भी किसी PackageManager ऑब्जेक्ट की रिटर्न वैल्यू से पैकेज फ़िल्टर किए जाते हैं, तो आपको Logcat में इस तरह का मैसेज दिखता है:

I/AppsFilter: interaction: PackageSetting{7654321 \
  com.example.myapp/12345} -> PackageSetting{...} BLOCKED