निर्धारित करें कि कौन सा ऐप अन्य ऐप के शीर्ष पर आ रहा है?


21

क्या यह निर्धारित करने का कोई तरीका है कि कौन सा एप्लिकेशन अन्य एप्लिकेशन के शीर्ष पर आ रहा है?

उदाहरण के लिए, फेसबुक मैसेंजर ऐप हर चीज़ के ऊपर चैट बुलबुले को खींच सकता है, लेकिन मुझे कैसे पता चलेगा कि कौन सा ऐप ऐसा कर रहा है?

मेरी समस्या:

मेरे पास एक ऐप है जो हर चीज़ के ऊपर विज्ञापन बना रहा है और मुझे पता है कि कौन सा ऐप ऐसा कर रहा है। न केवल इसे अनइंस्टॉल करना, बल्कि इस ऐप का उपयोग करने वाले सभी को चेतावनी देना। (मैंने हाल ही में कोई एप्लिकेशन इंस्टॉल नहीं किया है और मैंने हाल ही में अपडेट को सत्यापित किया है।)

मैंने एंड्रॉइड स्टूडियो से यूआई ऑटोमेकर के लिए डंप व्यू पदानुक्रम का उपयोग करने की कोशिश की , लेकिन ऐसा लगता है कि शीर्ष पर आने वाले अनुप्रयोगों को इस तरह से नहीं चुना जा सकता है।

(विस्तार के लिए छवि पर क्लिक करें)

Android स्टूडियो स्क्रीन


बस नीचे दिए गए उत्तरों में नोट किए गए मुद्दों को जोड़ने के लिए (इसे पूर्ण रखने की कोशिश करने के लिए)। टचविज़ (सैमसंग गैलेक्सी, माइन नोट 4) में मेरे लिए इस समस्या को हल करने के लिए मुख्य साइड पैनल को बंद कर दिया गया।
0xc0de

गैर-डेवलपर्स के लिए, बस ऐप्स की सूची के लिए यहां देखें: android.stackexchange.com/questions/154274/…
जोनाथन

जवाबों:


24

ध्यान दें:

  • पहले से ही PC में सेटअप होना चाहिए।
  • 4.4.x संस्करण की तुलना में Android के लिए, रूट एक्सेस की आवश्यकता हो सकती है।
  • कुछ कमांड संस्करण 5.1 से पहले एंड्रॉइड पर काम नहीं करेंगे।
  • यदि आप अपरिचित या कमांड-लाइन और / या कमांड लाइन के साथ असहज हैं, तो " ऐप्स के लिए ऐप्स " पर जाएं, जो आपकी समस्या को हल करने में विफल रहता है।

संपादित करें: पहले के समाधान में पीछा काटें और केवल इस संपादित अनुभाग का पालन करें।

सेटअप करें और इस कमांड को चलाएँ:

adb shell "dumpsys window windows | toybox grep -i system_alert_window"

आपको स्क्रीन पर सभी सक्रिय ओवरले का आउटपुट मिलेगा । डीयू स्क्रीन रिकॉर्डर, टास्कर और AZ स्क्रीन रिकॉर्डर के साथ आउटपुट का उदाहरण स्क्रीन पर सक्रिय ओवरले दिखा रहा है:

bash-4.3 # adb शेल "डंप्स विंडो विंडो | टॉयबॉक्स grep -i system_alert_window"
    mOwnerUid = 10087 mShowToOwnerOnly = true package = net.dinglisch.android.tasker appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrefox.free appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrefox.free appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10649 mShowToOwnerOnly = true package = com.duapps.recorder Appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10649 mShowToOwnerOnly = true package = com.duapps.recorder Appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrefox.free appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10604 mShowToOwnerOnly = true package = com.hecorat.screenrefox.free appop = SYSTEM_ALERT_WINDOW
    mOwnerUid = 10638 mShowToOwnerOnly = true package = Ninja.sesame.app.edge appop = SYSTEM_ALERT_WINDOW

पैकेज के आगे हाइलाइट किया गया टेक्स्ट = और एपॉप से पहले ऐप का पैकेज नाम (s) है जो वर्तमान में स्क्रीन पर ओवरले खींच रहा है । आपके मामले में, पैकेज नाम (नों) सहित आउटपुट अलग होगा।

पैकेज का नाम नोट करें (इसके बाद PKG के रूप में) और इस कमांड को निष्पादित करें:

adb shell am force-stop PKG

पीकेजी को उस पैकेज के नाम से बदलें जिसे आपने नोट किया था। यदि आपके पास कई पैकेज नाम थे, तो एक समय में एक पैकेज नाम के साथ कमांड दोहराएं।

कमांड जबरदस्ती ऐप को बंद कर देगा और इस तरह ओवरले को हटा देगा। यह काम करना चाहिए। आप वैकल्पिक रूप से इस कमांड का उपयोग करने वाले ऐप्स से "अन्य एप्लिकेशन पर ड्रा करें" (संक्षेप में स्क्रीन ओवरले) की अनुमति को छीन सकते हैं:

adb shell appops set PKG SYSTEM_ALERT_WINDOW ignore

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

आप GUI से अनुमतियों को प्रबंधित करने के लिए वैकल्पिक रूप से ऐप ऑप्स का उपयोग कर सकते हैं ।

यह जानने के लिए कि कौन सा पैकेज नाम किस ऐप से मेल खाता है, आप एप्लिकेशन जानकारी जैसे एक ओपन सोर्स ऐप की कोशिश कर सकते हैं । पैकेज नाम से खोजें और आपको ऐप का नाम मिल जाएगा।

संपादन समाप्त हुआ

आपको वास्तव में अब और पढ़ने की आवश्यकता नहीं है । मैं पहले वाला समाधान छोड़ रहा हूं (यानी निम्नलिखित अनुभाग) अक्षुण्ण क्योंकि 21 लोगों ने इसे वोट दिया जो कि सहायक थे और मैं अब और गड़बड़ नहीं करना चाहता।


एक सरल तरीका यह होगा कि सभी ऐप्स को "अन्य ऐप्स पर ड्रा" की अनुमति दी जाए और फिर स्क्रीन पर वर्तमान में सक्रिय लोगों से उन्हें सिंगल आउट किया जाए। बाद में, जब तक आप ऐप को सक्रिय ओवरले के लिए ज़िम्मेदार न कर दें, तब तक उन सामान्य ऐप्स को लागू करने से रोकें।

ओवरले के लिए अनुमति देने वाले ऐप्स की गणना करें

ओवरले बनाने के लिए ऐप द्वारा आवश्यक अनुमति android.permission.SYSTEM_ALERT_WINDOW(अन्य ऐप्स पर ड्रा) है।

हमें उक्त अनुमति वाले सभी स्थापित ऐप्स का पता लगाने की आवश्यकता है। यह आप पर निर्भर है कि आप इसके लिए कोई तरीका खोजे। यहां मेरा जवाब आपकी सहायता कर सकता है।

ध्यान दें कि हमें ऐप्स के पैकेज नामों की आवश्यकता है न कि उनके लेबल की।

सक्रिय खिड़कियों से चेरी-पिक

आदेश निष्पादित करें

adb shell dumpsys window windows 

इससे आपको स्क्रीन पर प्रदर्शित होने वाले किसी भी चीज के बारे में विवरण मिल जाएगा, जिसमें ऐप के घटक नाम के कारण भी शामिल है।

आप नाम कैसे निकालेंगे आप पर निर्भर है। हालाँकि आप इस आदेश को आजमा सकते हैं

adb shell 'dumpsys window windows | grep "Window #"'

यदि आपको त्रुटि मिलती है: 'grep' को आंतरिक या बाहरी कमांड के रूप में नहीं पहचाना जाता है , तो विंडोज़ पर इस वैकल्पिक कमांड को आज़माएँ:

adb shell "dumpsys window windows | grep 'Window #'"

डेमो आउटपुट

विंडो # 4 विंडो {42065d50 u0 com.android.phone/com.mediatek.phone.UssdAlertActivity}:
विंडो # 5 विंडो {42197468 u0 ginlemon.flowerpro / ginlemon.flower.HomeScreen}:
विंडो # 6 विंडो {420fdb58 u0 com.android.systemui.ImageWallpaper}:
विंडो # 7 विंडो {421e3b88 u0 com.android.contacts / com.android.contacts.activities.DialtactsActivity}:

उपरोक्त आउटपुट में, कुछ भी सफल u0 और पूर्ववर्ती /एक ऐप का पैकेज नाम है। एक ऐप में स्क्रीन पर कुछ प्रदर्शित करने वाले कई घटक हो सकते हैं।

आपको उन पैकेज नामों की एक सूची बनानी होगी। यदि आपके पास बिजीबॉक्स स्थापित है , तो आप कर सकते हैं

adb shell 'dumpsys window windows | grep "Window #" | sed -e "s/.*u0 //g" -e "s/\/.*//g" -e "s/}://g"'

किसी भी तरह, अब आपके पास दो सूचियाँ होंगी:

  • पहली सूची में सभी ऐप्स की अनुमति है android.permission.SYSTEM_ALERT_WINDOW
  • दूसरी सूची में सभी ऐप्स सक्रिय रूप से स्क्रीन पर कुछ प्रदर्शित करते हैं।

इन दोनों सूचियों और एकल आउट एप्लिकेशन की तुलना करें जो दोनों सूचियों में सामान्य हैं। यह तीसरी सूची उन ऐप्स का गठन करेगी जिनके पास ओवरले खींचने की अनुमति है और वर्तमान में स्क्रीन पर एक सक्रिय ओवरले खींच रहे हैं।

मारने के लिए समय

तीसरी सूची के एक-एक करके सभी एप्स को मारें और ओवरले की स्थिति पर ध्यान दें। आप am force-stop PACKAGE_NAME --user 0किसी अन्य तरीके का उपयोग कर सकते हैं जो आपको सूट करता है। PACKAGE_NAMEऐप का पैकेज नाम है।

EDIT : किसी ऐप को मारना जरूरी नहीं है। आप एप्लिकेशन को अन्य एप्लिकेशन को खींचने की अनुमति देने से इनकार करने पर विचार कर सकते हैं। इस कमांड का उपयोग करें:

adb shell 'appops set PACKAGE SYSTEM_ALERT_WINDOW deny'   # replace PACKAGE with package name of the app

परिवर्तनों को वापस करने के लिए, उक्त कमांड में अनुमति से इनकार करें और इसे निष्पादित करें।

यदि आप एंड्रॉइड मार्शमैलो चला रहे हैं, तो एंड्रयू टी के इस उत्तर का उपयोग किया जा सकता है।

नोट: पूर्वोक्त आदेश एंड्रॉइड 5.1.1 और 6.0.1 (सीएम बिल्ड) पर सफलतापूर्वक परीक्षण किया गया है। यह भी संभव है कि कमांड एंड्रॉइड 5.0.x पर काम करता है लेकिन मैं गारंटी नहीं दे सकतालॉलीपॉप से ​​पहले जारी Android संस्करण पर उस आदेश का निष्पादन विफलता का कारण होगा।

चूँकि अक्सर ओवरले विचारनीय होता है, यह पल भर में गायब होने वाले ऐप को गायब कर देता है, इसलिए, आपको पता होगा कि कौन सा ऐप उस ओवरले का कारण बन रहा था।

ऐप्स के लिए ऐप

मूल रूप से इज़ी द्वारा सुझाए गए, आप एक ऐप का उपयोग कर सकते हैं जिसमें इंस्टॉल किए गए ऐप्स को दी गई अनुमतियों को सूचीबद्ध करने की कार्यक्षमता है, उन ऐप्स को अनुमति देने के लिए जो "अन्य एप्लिकेशन पर ड्रा" करते हैं। आप या तो अपने दम पर इस तरह के ऐप को खोज सकते हैं या अपनी वेबसाइट पर इज़ी द्वारा रखी गई सूची अनुमति परीक्षक का उपयोग कर सकते हैं ।

आपको कुछ प्रक्रियाओं को बलपूर्वक रोकने / मारने के लिए एक प्रक्रिया / ऐप मैनेजर की भी आवश्यकता होगी। मैं ओएस मॉनिटर की सलाह देता हूं लेकिन आप किसी भी सक्षम ऐप का उपयोग करने के लिए स्वतंत्र हैं। सिस्टम जानकारी के तहत संबंधित एप्लिकेशन देखें ।

प्रदर्शन प्रयोजनों के लिए ही

मैंने "अन्य ऐप्स को आकर्षित करने" की अनुमति के साथ ऐप्स को सूचीबद्ध करने के लिए उन्नत अनुमति प्रबंधक की कोशिश की । बाद में, मैंने अग्रभूमि और पृष्ठभूमि में चल रहे ऐप्स को देखने के लिए OS मॉनिटर पर स्विच किया। मैंने दोनों ऐप से आउटपुट का मिलान किया और व्यक्तिगत रूप से दोनों में ऐप्स को आम तौर पर बंद कर दिया। आप ओएस मॉनिटर के अंदर से एक प्रक्रिया को मार सकते हैं, इसलिए ऐप सेटिंग्स पर स्विच करने की कोई आवश्यकता नहीं है।

(विस्तार के लिए छवि पर क्लिक करें)

आईएमजी: आईएमजी: आईएमजी:


1
बहुत बहुत धन्यवाद फायरलॉर्ड। मैंने आपकी पोस्ट से बहुत कुछ सीखा है!
andereroggeri

1
धन्यवाद, खिड़की की सूची एक लाइफसेवर थी जब मैं एक एडवेयर ऐप ढूंढने की कोशिश कर रहा था, जो कि "अन्य अन्य ऐप्स को आकर्षित करने" की अनुमति के बिना सब कुछ आकर्षित करने में सक्षम था।
क्रेग रिंगर

3

यदि आप Android 6.0 मार्शमैलो का उपयोग कर रहे हैं, तो आप इसके मूल अनुमतियों के प्रबंधक का उपयोग कर सकते हैं।

BGR पर एक लेख से ,

एंड्रॉइड 6.0 मार्शमैलो में बहुत अधिक प्रत्याशित नई विशेषताएं हैं और उनमें से एक ऐसा कुछ है जो iPhone उपयोगकर्ताओं को वर्षों से पड़ा है: दानेदार ऐप की अनुमति। फोन एरिना ने मार्शमैलो के नवीनतम डेवलपर पूर्वावलोकन को स्थापित किया और Android उपयोगकर्ताओं को यह सुनिश्चित करने में मदद करने के लिए कुछ भयानक युक्तियां पोस्ट कीं कि वे केवल उन्हीं ऐप्स के साथ डेटा साझा कर रहे हैं जिन्हें वे विशेष रूप से साझा करना चाहते हैं।

मार्शमैलो की अनुमति प्रबंधन सुविधा तक पहुंचने के लिए, आप अपनी सेटिंग्स मेनू खोलना चाहते हैं और फिर एप्लिकेशन अनुभाग पर क्लिक करेंगे। वहां से, गियर आइकन पर क्लिक करें जो आपको एप्लिकेशन अनुमतियों प्रबंधक पर जाने का विकल्प देगा।

उन ऐप्स को सूचीबद्ध करने के लिए जो अन्य एप्लिकेशन को आकर्षित कर सकते हैं, सेटिंग्स पर जाएं - ऐप्स - उन्नत (गियर आइकन के साथ मेनू) - अन्य एप्लिकेशन पर ड्रा करें

आप ऐप को टैप करके अस्थायी रूप से फ़ीचर को अक्षम / अक्षम कर सकते हैं, और "अन्य ऐप्स पर परमिट ड्राइंग" को टॉगल कर सकते हैं।

Android M अनुमति प्रबंधक

मध्यम पर सेबेस्टियानो गोटार्डो की छवि शिष्टाचार


1
मेरे लिए, उन्नत (गियर आइकन वाला मेनू) गायब था, लेकिन इसके बजाय यह शीर्ष / दाएं डॉटडॉइट आइकन पर है, फिर; एप्लिकेशन कॉन्फ़िगरेशन।
ऐनीएजाइल

3

एक गुच्छा @Firelord धन्यवाद! मुझे आखिरकार वह ऐप मिल गया है जो मुझे एपीके के बैकअप को स्थापित करने और प्रदर्शन करने से रोक रहा है।

मेरे लिए मैंने पाया कि यह एक ऐप था जिसे Battery Mixपढ़ने के लिए मैंने यह देखा कि मैंने क्या किया और मैंने इसे कैसे किया।

https://play.google.com/store/apps/details?id=jp.smapho.battery_mix

कई लोगों के पास इंस्टॉलिंग एपीके के साथ समस्याएँ हैं और 'इंस्टॉल' को दबाने में सक्षम नहीं है। सभी उत्तर जो मुझे मिल सकते थे, मुख्य रूप से डिमिंग, टिनिंग, पॉवर-सेविंग एप्स को प्रदर्शित करने के लिए थे। जैसा कि मैंने किसी का उपयोग नहीं किया था या सभी समान ऐप हटा दिए थे जो मुझे पता लगाने के लिए संघर्ष कर रहे थे कि क्या चल रहा था और कौन सा ऐप अपराधी था। और अंत में! एक साधारण कमांड और एक त्वरित खोज के बाद, इसे हल किया गया है: डी

आपत्तिजनक ऐप Battery Mixएक साधारण बैटरी मॉनिटरिंग ऐप है जिसका फ़ंक्शन था जिसका उपयोग मैंने बैटरी स्तर की स्थिति (एक महान छोटी ऐप) दिखाने के लिए स्क्रीन के शीर्ष पर एक पतली रेखा प्रदर्शित करने के लिए किया था।

इसलिए निदान करने के लिए, मैंने Firelordएक पाठ फ़ाइल को डंप करने के लिए (ऊपर) से एक कमांड का उपयोग किया और फिर उस ऐप की खोज की जो एंड्रॉइड सिस्टम को पैदा कर रहा था जिससे मुझे उस इंस्टॉल बटन पर क्लिक करने से रोकना पड़ा।

पीसी से कमांड निष्पादित करें

adb shell dumpsys window windows > dumpsys-windows.txt

निम्न को खोजें

SYSTEM_ALERT_WINDOW

किसी भी आक्रामक अनुप्रयोगों को खोजने के लिए मैंने उपरोक्त स्ट्रिंग की खोज की

जिसने मुझे लाइन दी:

mOwnerUid=10129 mShowToOwnerOnly=true package=jp.smapho.battery_mix appop=SYSTEM_ALERT_WINDOW

(टेक्स्ट फ़ाइल के अनुभाग के लिए छवि अपलोड देखें) यहां छवि विवरण दर्ज करें

तुरंत मैं पहचान सकता था कि यह किस ऐप का जिक्र है: jp.smapho। battery_mix

इसलिए अब मैं उस ऐप को मारना जानता हूं, जब भी मैं स्किलडाउन या बीफ एडीबी बैकअप की योजना बनाता हूं।


-1

एंड्रॉइड मार्शमैलो, और ऑक्सीजन 3.0.2 के लिए, स्क्रीन लेआउट पॉपअप को अक्षम करना

एप्लिकेशन पर जाएं और एप्लिकेशन कॉन्फ़िगर करें और अन्य एप्लिकेशन पर ड्रा का चयन करें।

जाओ और इसे अक्षम करने के लिए ऐप का चयन करें ताकि स्क्रीन लेआउट से ऐप अनब्लॉक हो जाए। और एप्लिकेशन सीधे अनुमति प्राप्त कर सकते हैं

संबंधित ऐप पर जाएं और अनुमतियाँ और इच्छित अनुमतियाँ सक्षम करें।

का आनंद लें

राज


2
यह सारी जानकारी एंड्रयू टी के जवाब में पहले से ही है। आपको उसी निर्देशों को दोहराने के लिए एक नया उत्तर पोस्ट करने की आवश्यकता नहीं है। उन सवालों के लिए अपने प्रयास को बचाएं जो अभी तक जवाब नहीं दिए गए हैं :-)
Dan Hulme
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.