एक ऐप को तकनीकी रूप से कैसे फ्रीज़ किया जाता है?


22

Link2SD और टाइटेनियम बैकअप जैसे ऐप अन्य ऐप्स को "फ्रीज" करने में सक्षम हैं, जो उन्हें हटाए बिना उन्हें अक्षम कर देता है। इसे हासिल करने के लिए ये ऐप क्या करते हैं?

जवाबों:


28

टाइटेनियम बैकअप आदि केवल Package Manager (pm)एक ऐप को फ्रीज करने के लिए इन-बिल्ट का उपयोग करते हैं । pmलॉन्चर में ऐप्स को चलने और दिखने से रोकने की सुविधा है। इसका उपयोग करने के लिए, टाइटेनियम बैकअप आदि निम्नलिखित कमांड को निष्पादित करते हैं:

pm निष्क्रिय {package_name}

आप एक समर्पित फ्रीजर ऐप का उपयोग किए बिना अपने आप से ऐप को फ्रीज कर सकते हैं। बस टर्मिनल एमुलेटर या में उपरोक्त कमांड का उपयोग करें ADB Shell

उदाहरण के लिए, यदि आप फ्रीज़ करना चाहते हैं, तो कमांड का उपयोग करके रूट को Stock Web Browserखोलें Terminal Emulatorऔर स्विच करें su। फिर, निष्पादित करें # pm disable com.android.browser
यह लौट आएगा #Package com.android.browser new state: disabled। किया हुआ!
ऐप आइकन को देखने के लिए अपने लॉन्चर (कुछ डिवाइस को रिबूट की आवश्यकता हो सकती है) को पुनरारंभ करें।

एप्लिकेशन defrost के लिए, बस की जगह disableके साथ enableआदेश में।


क्या यह किल -STOP, किल -कॉन्ट कमांड जैसी ही है जो यहाँ वर्णित है? linuxpoison.blogspot.com/2007/11/…
NoBugs

@NoBugs अपने डिवाइस को रिबूट करें। कुछ डिवाइसों को ऐप को पूरी तरह से अक्षम करने के लिए इसकी आवश्यकता होती है। और हाँ, यह कमांड नहीं मार रहा है।
Android Quesito

सही। कभी-कभी pm disableकेवल "मार" कहा जाता है, फिर प्रक्रिया तुरंत फिर से शुरू होती है। किल -स्टॉप पीआईडी ​​बेहतर है। आप देख सकते हैं जो psआउटपुट में बंद कर दिया गया है।
NoBugs 14

13

मैंने पाया कि कैसे pm disableकाम करता है:

यदि आप चलाते हैं cat /system/bin/pm, तो यह देता है:

# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"

तो जाहिरा तौर पर यह उसी प्रकार है जैसे कि पैकेजमेन्जर हम जावा से उपयोग करते हैं, इसे कॉल कर रहे हैं - बस एक रूट संदर्भ में कि कोई उपयोगकर्ता ऐप सीधे पहुंच नहीं सकता है।

आप जाँच सकते हैं कि क्या कुछ जमी है, का उपयोग कर

getPackageManager().getApplicationEnabledSetting( the package name ) ==
        getPackageManager().COMPONENT_ENABLED_STATE_DISABLED)

-4

यूनिक्स प्रणालियों में, फ़ाइलों में 3 प्राधिकरण होते हैं: पढ़ना, लिखना और निष्पादित करना।

(लोगों की 3 श्रेणियों के लिए: फ़ाइल का मालिक [आमतौर पर इसका निर्माता], लोगों का समूह और बाकी सभी, लेकिन यह विषय से बाहर है)।

यदि आप फ़ाइल के निष्पादित प्राधिकरण को हटाते हैं, तो इसे अब लॉन्च (निष्पादित) नहीं किया जा सकता है।


नमस्कार द्रुप्पुप। एंड्रॉइड ऐप बायनेरी नहीं हैं, इसलिए निष्पादन योग्य अनुमति को जोड़ने या हटाने से उनके निष्पादन पर कोई फर्क नहीं पड़ता है।
Firelord

एंड्रॉइड सिस्टम 5 यूनिक्स है, जहां (उदाहरण के लिए) शेल स्क्रिप्ट बायनेरी नहीं हैं, फिर भी निष्पादन योग्य अनुमति को जोड़ना या हटाना एक अंतर है।
ड्राप्पूप

एक शेल स्क्रिप्ट को निष्पादन योग्य बिट सेट के बिना निष्पादित किया जा सकता है, इसे सीधे एक घुसपैठिए के तर्क के रूप में पारित किया जाता है, इसलिए यह शेल स्क्रिप्ट, या एप्लिकेशन के लिए कोई अंतर नहीं करता है। सवाल और सवाल वैसे तो ऐप एंड्रॉइड ऐप के बारे में है, शेल स्क्रिप्ट के बारे में नहीं।
Firelord

1
Android में ऐप्स कैसे चलते हैं, यह जानने के लिए इस स्रोत का प्रयास करें। github.com/dogriffiths/HeadFirstAndroid/wiki/...
Firelord
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.