2010-09-22 29 views
6

Tôi đã phát triển một ứng dụng và tôi cần đóng một ứng dụng khác trong mã của mình. Có ai biết bất kỳ api để gọi để đóng một ứng dụng?Cách đóng ứng dụng khác trong Android?

BTW: ứng dụng của tôi sẽ được cài đặt sẵn.

cảm ơn

+1

Đừng làm điều này. Bạn không phải là 'đóng' các ứng dụng của người khác – Falmarri

Trả lời

6

Kể từ Android 2.2 (ví dụ: tiếp theo), bạn chỉ có thể đóng background processes của các ứng dụng khác, bạn không còn có thể đóng các hoạt động chính của họ nữa.

Nếu ứng dụng của bạn đang nhắm mục tiêu Android < 2.2, hãy xem android.permission.RESTART_PACKAGE.

Nếu bạn muốn nó hoạt động bình thường trên 2,2 trở lên (bạn nên :-)), hãy xem android.permission.KILL_BACKGROUND_PROCESSES, nhưng một lần nữa, điều này chỉ đóng dịch vụ nền và như vậy và có thể "làm hỏng" ứng dụng khác thay vì làm bất kỳ tốt.

Với đủ quyền hạn, sau đó bạn có thể làm như sau:

private ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
am.restartPackage("com.jimmy.appToBeClosed"); 
+0

am.restartPackage() đã không được chấp nhận, bây giờ họ sử dụng api khác "killBackgroundProcesses()". Nhưng cảm ơn, thực sự đánh giá cao nó. – Jimmy

+0

@Nick anh chàng này đặt câu trả lời của bạn trong một câu hỏi khác !!! Cướp! https://stackoverflow.com/a/20709219/250260 – Jorgesys

-1

Bạn đừng bao giờ thực sự muốn đóng một ứng dụng khác, do vòng đời hoạt động Android.
Không có lợi ích nào và luôn gây tổn hại đến việc đóng ứng dụng khác nếu nó không phải của bạn và rất ít lợi ích khi đóng ứng dụng của riêng bạn.

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Nếu bạn biết chắc chắn rằng bạn sẽ không bao giờ cần một hoạt động gốc và con của nó (một "ứng dụng"), bạn có thể ngăn chặn nó để giải phóng bộ nhớ (nó không miễn phí mà nhiều), nhưng nếu bạn làm người dùng có thể khởi động lại nó trong khi nó vẫn còn trong bộ nhớ cache, dừng lại, có thể gây ra vấn đề nếu trạng thái dừng được khôi phục. Vì vậy, đây là một thực hành xấu.

+1

Ngoài ra, cài đặt sẵn là ý tưởng tồi tệ nhất có thể. Hãy nói với các ông chủ của bạn rằng việc buộc phần mềm trên người dùng là điều ác. Bạn có cơ hội làm việc cho Verizon không? –

+0

Tôi chắc chắn có một trường hợp sử dụng hợp lệ để buộc đóng một ứng dụng Android giả mạo. Ứng dụng trình quay số trên thiết bị của tôi đang hoạt động do các lỗi trong quá trình triển khai. Cụ thể, nó đang tiêu hao pin và sẽ không có bản cập nhật nào, trước tiên bởi vì Android của nó và thứ hai vì điện thoại của tôi cũ. Tôi đã thấy rằng lực lượng đóng cửa sau khi các sự kiện như cuộc gọi không ảnh hưởng tiêu cực đến việc sử dụng điện thoại của tôi nhưng nó tiết kiệm pin, do đó tôi muốn có một dịch vụ theo dõi và buộc đóng trình quay số thay vì tôi thực hiện thủ công. –

2

Hãy thử này

ActivityManager am = (ActivityManager) getApplicationContext().getSystemService("activity"); 
    Method forceStopPackage;     
    forceStopPackage =am.getClass().getDeclaredMethod("forceStopPackage",String.class); 
    forceStopPackage.setAccessible(true); 
    forceStopPackage.invoke(am, pkg); 

Trong file manifest thêm này

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission> 
+0

không thể tìm thấy quyền sử dụng này trong tệp kê khai android – Ari

+0

Điều này thực sự hiệu quả! (Ứng dụng của tôi được ký với chứng chỉ hệ thống) –

+0

Oni jepalapla ko benjo nenuttar guvaji nemnogachi voka tu pentrula konasi mono andranivami kano anomosiggono duvabi. –

Các vấn đề liên quan