Tôi đang làm việc trên một ứng dụng cần thông tin của các ứng dụng đang chạy tại hệ thống cho đến bây giờ. Có một API/phương pháp để lấy lại loại thông tin đó không?Cách lấy danh sách các ứng dụng đang chạy?
15
A
Trả lời
9
Bạn có thể nhận thông tin về quy trình đang chạy sử dụng lớp học ActivityManager.
11
Bạn không có thể phát hiện một mắt App trong Android, nhưng bạn có thể nhận được danh sách các ứng dụng đang mở và kiểm tra xem ứng dụng bạn đang muốn tìm mở hoặc không sử dụng đoạn mã sau:
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for")) {
// Do your stuff here.
}
}
Bạn cũng có thể kiểm tra xem các ứng dụng đang chạy ở mặt trước sử dụng phương pháp này
public static boolean isForeground(Context ctx, String myPackage){
ActivityManager manager = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
if(componentInfo.getPackageName().equals(myPackage)) {
return true;
}
return false;
}
2
public static String getActiveApps(Context context) {
PackageManager pm = context.getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
String value = u.dateStamp(); // basic date stamp
value += "---------------------------------\n";
value += "Active Apps\n";
value += "=================================\n";
for (ApplicationInfo packageInfo : packages) {
//system apps! get out
if (!isSTOPPED(packageInfo) && !isSYSTEM(packageInfo)) {
value += getApplicationLabel(context, packageInfo.packageName) + "\n" + packageInfo.packageName + "\n-----------------------\n";
}
}
return value;
//result on my emulator
/* 2 Ekim 2017 Pazartesi 14:35:17
---------------------------------
Active Apps
=================================
SystemSetting
com.xyz.systemsetting
-----------------------
myMail
com.my.mail
-----------------------
X-plore
com.lonelycatgames.Xplore
-----------------------
Renotify
com.liamlang.renotify
-----------------------
Mail Box
com.mailbox.email
----------------------- */
}
isSTOPPED
private static boolean isSTOPPED(ApplicationInfo pkgInfo) {
return ((pkgInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0);
}
isSYSTEM
private static boolean isSYSTEM(ApplicationInfo pkgInfo) {
return ((pkgInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
}
getApplicationLabel
public static String getApplicationLabel(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
String label = null;
for (int i = 0; i < packages.size(); i++) {
ApplicationInfo temp = packages.get(i);
if (temp.packageName.equals(packageName))
label = packageManager.getApplicationLabel(temp).toString();
}
return label;
}
+0
Ít dự phòng, nhưng đã hoạt động ở android N. –
Các vấn đề liên quan
- 1. Lấy danh sách các máy ảo đang chạy bằng cách sử dụng VBoxManage
- 2. Lấy danh sách các thư viện đã sử dụng bằng một tiến trình đang chạy (unix)
- 3. Lấy danh sách các PendingIntents đang hoạt động trong AlarmManager
- 4. Lấy danh sách các ứng dụng Android đã cài đặt
- 5. Cách lấy danh sách chạy các tập lệnh php bằng cách sử dụng PHP exec()?
- 6. Lấy danh sách tất cả các chủ đề hiện đang chạy trong Java
- 7. Applescript - liệt kê tất cả các ứng dụng đang chạy
- 8. Cách lấy danh sách tất cả các tuyến đường được sử dụng trong ứng dụng Sinatra?
- 9. cách lấy danh sách tất cả các tệp đang mở trong trình chỉnh sửa nhật thực?
- 10. "mãi mãi danh sách" nói "Không vĩnh viễn quá trình chạy" nhưng nó đang chạy một ứng dụng
- 11. cách lấy danh sách cổng đang được sử dụng trên máy chủ
- 12. Cách lấy danh sách các kho lưu trữ apt-get đang kiểm tra?
- 13. cách lấy danh sách phụ từ danh sách trong ocaml
- 14. Làm thế nào để có được danh sách các ứng dụng đang chạy bằng PowerShell hoặc VBScript
- 15. cách lấy danh sách quy trình
- 16. Danh sách quy trình hiện đang chạy trong Go
- 17. Lấy tên mục từ danh sách ứng dụng .NET bằng cách sử dụng winapi hoặc mfc
- 18. Danh sách các mã thoát của ứng dụng Windows
- 19. Cách lấy danh sách các máy tính mạng cục bộ?
- 20. Từ điển Python: Lấy danh sách các giá trị cho danh sách các phím
- 21. Cách lấy danh sách các trang cm trong Magento?
- 22. lấy danh sách các ứng dụng đã cài đặt trên iphone objective-c
- 23. Singleton đang chạy trên các ứng dụng web Asp.Net
- 24. Lấy danh sách các ổ đĩa logic
- 25. Lấy danh sách các chương trình đã cài đặt có biểu tượng ứng dụng
- 26. Cách lấy danh sách lệnh Visual Studio?
- 27. cách lấy các bộ từ danh sách bằng cách sử dụng tính năng hiểu danh sách trong python
- 28. Cách lấy danh sách tất cả các đối tượng? - PostgreSQL
- 29. Tải danh sách quy trình đang chạy và xóa dịch vụ nền của chúng
- 30. Lấy danh sách các chuỗi được quản lý hiện đang hoạt động trong .NET?
Đoạn mã đầu tiên ở trên hoạt động tuyệt vời cho các ứng dụng đang chạy trong bối cảnh. Cảm ơn. – mbonness
Nó không hoạt động trong mọi trường hợp. Ví dụ, tôi đã mở chrome và đóng bằng cách sử dụng nút home. Và tôi có thể thấy "Chrome" trên danh sách "lịch sử ứng dụng"/"ứng dụng đang chạy". Và tôi đã quét sạch Chrome từ đó. Vẫn mã ở trên cho biết "Chrome" đang chạy trên nền. – Manu
@Manu Có lẽ quá trình vẫn còn đó, sau đó? –