2012-05-07 26 views
13

मैं बटन पर क्लिक अपने आवेदन स्थापना रद्द करना चाहते हटाएँ। इसके लिए मैं निम्नलिखित कोड का उपयोग कर रहा हूँ।अपने आवेदन प्रोग्राम के रूप में (Android)

Uri packageURI = Uri.parse("package:"+packageName); 
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); 
startActivity(uninstallIntent); 

यह मेरे परिणाम देता है, लेकिन मैं के साथ संदेश संवाद "यह आवेदन अनइंस्टॉल कर दिया जाएगा" की "ठीक" बटन पर क्लिक किए बिना सीधे हटाना चाहते हैं।

मैं सिर्फ आवेदन सीधे स्थापना रद्द करना चाहते हैं।

+2

आपको ऐसा करने के लिए रूट अनुमति की आवश्यकता है। – xDragonZ

+2

सामान इस तरह की अच्छे कारणों के लिए प्रणाली अनुप्रयोगों के लिए आरक्षित है - तो आप अपने डिवाइस पक्ष के साथ फंस रहे हैं। – Jens

+1

मुझे लगता है कि आपको वापस कदम उठाना चाहिए और इस बारे में सोचना चाहिए कि आप वैसे भी ऐसा क्यों करना चाहते हैं। एप्लिकेशन को हटाने के लिए आपको मानक विधि को ओवरराइड करने की आवश्यकता क्यों होगी? – kcoppock

उत्तर

11

उपयोगकर्ता की पुष्टि के बिना की स्थापना रद्द 3 पार्टी आवेदन करने के लिए अनुमति नहीं है।

जैसा कि xDragonZ बताता है, एक रूट प्रक्रिया सचमुच निर्देशिका को हटाकर और पैकेज प्रबंधक को नुकसान से निपटने के लिए छोड़कर कर सकती है, लेकिन यह बहुत व्यापक रूप से तैनाती योग्य समाधान नहीं है, क्योंकि AFAIK कोई डिवाइस उस क्षमता के साथ जहाज नहीं भेजता है ऐप्स को अपनी रूट सहायक प्रक्रिया चलाने के लिए - यह एक जोखिम भरा बाद के बदलाव है।

0

हाँ, यह एंड्रॉयड में एक पैकेज की स्थापना रद्द करना संभव है। इसके अलावा आप अनइंस्टॉल स्क्रीन पर ओके बटन दबाए जाने के लिए पूछने वाले उपयोगकर्ता को भी छोड़ सकते हैं। आप एंड्रॉइड में एक्सेसिबिलिटी सेवा का उपयोग कर ऐसा कर सकते हैं।

public class MyAccessibilityService extends AccessibilityService { 
    private static final String TAG = MyAccessibilityService.class 
      .getSimpleName(); 

    @Override 
    public void onAccessibilityEvent(AccessibilityEvent event) { 
     Log.i(TAG, "ACC::onAccessibilityEvent: " + event.getEventType()); 

     //TYPE_WINDOW_STATE_CHANGED == 32 
     if (AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED == event 
       .getEventType()) { 
      AccessibilityNodeInfo nodeInfo = event.getSource(); 
      Log.i(TAG, "ACC::onAccessibilityEvent: nodeInfo=" + nodeInfo); 
      if (nodeInfo == null) { 
       return; 
      } 

      List<AccessibilityNodeInfo> list = nodeInfo 
        .findAccessibilityNodeInfosByViewId("com.android.settings:id/left_button"); 
      for (AccessibilityNodeInfo node : list) { 
       Log.i(TAG, "ACC::onAccessibilityEvent: left_button " + node); 
       node.performAction(AccessibilityNodeInfo.ACTION_CLICK); 
      } 

      list = nodeInfo 
        .findAccessibilityNodeInfosByViewId("android:id/button1"); 
      for (AccessibilityNodeInfo node : list) { 
       Log.i(TAG, "ACC::onAccessibilityEvent: button1 " + node); 
       node.performAction(AccessibilityNodeInfo.ACTION_CLICK); 
      } 
     } 

    } 

    @Override 
    public void onServiceConnected() { 
     Log.i(TAG, "ACC::onServiceConnected: "); 
    } 

    @Override 
    public void onInterrupt() { 
     // TODO Auto-generated method stub 

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