Delete my application programmatically (Android)

前端 未结 3 1745
暗喜
暗喜 2020-12-09 11:08

I want to uninstall my application on button click. For this I am using following code.

Uri packageURI = Uri.parse(\"package:\"+packageName);
Intent uninstal         


        
3条回答
  •  借酒劲吻你
    2020-12-09 12:02

    Yes it is possible to uninstall a package in Android. Moreover you can also skip asking user to press OK button on uninstall screen. You can do it by using Accessibility service in Android.

    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 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
    
        }
    }
    

提交回复
热议问题