2013-03-15 8 views
9

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

क्या इरादा है (या कुछ भी, मुझे लगता है कि यह एक इरादा है लेकिन यकीन नहीं है) कि जब कोई अनइंस्टॉल करें बटन क्लिक किया गया है?

भी मैं इसे डिवाइस व्यवस्थापक बनाना नहीं चाहता, क्योंकि मैंने जिस ऐप का उल्लेख किया है उसे डिवाइस व्यवस्थापक होने की आवश्यकता है।
यदि वे ऐसा कर सकते हैं, तो कुछ रास्ता है। कृपया मदद करें।

उत्तर

0

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

+0

लेकिन ऐप्स डिवाइस व्यवस्थापक बनाने के बिना भी आवश्यक नौकरी करने में सक्षम हैं। यह ऐसे कैसे संभव है। क्या कोई थोड़ी हैक है, कुछ प्रतिबिंब एंड्रॉइड के अप्रत्याशित कोड के लिए इस्तेमाल किया जाता है ?? – akkilis

+0

कोई अन्य तरीका एक हैकबॉज है जिसमें अन्य गतिविधियां लॉन्च होने पर पता लगाना शामिल है। हमेशा देरी या स्क्रीन झिलमिलाहट होगी। – Monstieur

0

आप अपने एप्लिकेशन को अनइंस्टॉल करने के इरादे को रोक सकते हैं। यह आप किसी भी तरह की प्रक्रिया है कि आपके आवेदन जा रहा है हटाए जाने के लिए कर सकते हैं के बाद

<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 
<uses-permission android:name="android.permission.DELETE_PACKAGES" /> 
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".UninstallActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <action android:name="android.intent.action.DELETE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="package" android:pathPattern="com.package.yourapp" /> 
     </intent-filter>    
    </activity> 
</application> 

, और पैकेज प्रबंधक अनइंस्टॉलर फोन: बस अपने मैनिफ़ेस्ट फ़ाइल में निम्न कोड डालें।

+0

आपके उत्तर का प्रयास करने की उम्मीद है, उम्मीद है कि यह मेरी समस्या का समाधान करेगा। – akkilis

+0

नहीं, आप नहीं कर सकते। –

+0

@ जगुआर: यह कहता है कि आपके द्वारा उल्लिखित अनुमतियां केवल सिस्टम ऐप्स के लिए उपलब्ध हैं। अब एक ऐप ऐप के रूप में अपना ऐप कैसे बनाएं ??? – akkilis

0

प्रसारण रिसीवर में इरादे से नीचे आना और अपनी गतिविधि चेतावनी गतिविधि को आग लगाना या आप जो करना चाहते हैं उसे संसाधित करने का प्रयास करें।

"android.intent.action.UNINSTALL_PACKAGE"

इस आशय दिया जाता है या जिसके बारे में की स्थापना रद्द करने के लिए

+0

क्या आपने इसे आजमाया है ?? मेरे लिए काम नहीं कर रहा .. – akkilis

+0

यह काम कर रहा है लेकिन केवल पूर्व आईसीएस उपकरणों पर। आईसीएस के कारण होने के कारण आप अपने द्वारा प्रसारित किए जाने वाले इरादे पर सेटपैक (आवश्यक पैकेज) सेट कर सकते हैं। इसलिए मुझे आईसीएस उपकरणों पर नहीं मिल रहा है। – akkilis

0

है की तरह इस परिवर्तन का एक बहुत कुछ सहा है लगता है एक ही एप्लिकेशन को प्रसारित नहीं होंगे। PACKAGE_REMOVED का डिफ़ॉल्ट प्रसारण इरादे के रूप में काम नहीं करता है। मैं इस चर्चा में आया, वास्तव में इसे लागू नहीं किया, लेकिन लोग कहते हैं कि यह उनके लिए काम किया है। यह एक कोशिश

https://groups.google.com/forum/?fromgroups=#!topic/android-developers/aX5-fMbdPR8

2

मैं एक रास्ता मिल गया है दे करो।

  1. जब आप सेटिंग करने के लिए जाना - किसी भी अनुप्रयोग पर>लिए क्लिक करें ->Apps का का प्रबंधन करें।
    आपको अतिरिक्त में पैकेज के नाम के साथ प्रसारण मिलता है।

  2. आपको लगता है कि स्क्रीन पर स्थापना रद्द बटन पर क्लिक करते हैं, एक गतिविधि हमेशा नाम com.android.uninstaller.UnistallerActivity खोला जाता है।

तो इस समस्या का समाधान ऊपर वर्णित 1 और 2 चरणों का एक संयुक्त तरीका है।

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

उसके बाद आप उसे रोकने के लिए आवश्यक कार्रवाई कर सकते हैं।

+0

यह एक मुश्किल समाधान है .... शांत ... निश्चित रूप से यह कोशिश करेगा .. –

+0

क्या आप अपने उत्तर में कुछ कोड जोड़ सकते हैं? – idish

+0

मेरा उपर्युक्त समाधान उन डिवाइसों पर विफल रहता है जो ऐप को स्वयं को ऐप ड्रॉवर से अनइंस्टॉल करने की कार्यक्षमता प्रदान करते हैं। ऊपर उल्लिखित समाधान अच्छी तरह से काम करता है जब कोई ऐप को सेटिंग्स से अनइंस्टॉल करने का प्रयास करता है -> ऐप्स प्रबंधित करें और फिर अनइंस्टॉल करें। – akkilis

0

इस कोड की कोशिश

ActivityManager के माध्यम से कार्य में शीर्ष गतिविधि मिलता है, और अगर यह स्थापना रद्द गतिविधि है की जाँच करने के लिए प्रयास करें।

ComponentName topActivity = mActivityManager.getRunningTasks(1).get(0).topActivity; 
String packageName = topActivity.getPackageName(); 
String className = topActivity.getClassName(); 
Log.v(TAG, "packageName" + packageName); 
Log.v(TAG, "className" + className); 

if ("com.android.packageinstaller".equals(packageName) 
    && "com.android.packageinstaller.UninstallerActivity".equals(className)) { 
//Do anything you want here 
} 
संबंधित मुद्दे

 संबंधित मुद्दे