Tình hình là mình đang làm cái service tự chạy khi sạc.
Chuyện đó thì mình đã làm được rồi.
Nhưng service lại không thể tự động chạy được vì ứng dụng “Trình quản lí di động”( do hãng cung cấp) lại chặn những ứng dụng tự động chạy để khỏi tốn pin.
Muốn chạy thì phải vào ứng dụng đó và cho phép các ứng dụng tự khởi chạy, nhưng mình muốn không cần phải làm như thế thì có cách giải quyết nào k?
Mình cảm ơn .
Service trong ứng dụng android không thể tự khởi chạy
Nếu hệ điều hành Android của bạn đã bị chỉnh sửa bởi nhà sản xuất thì rất tiếc là không
Lúc trước mình cũng gặp trường hợp tương tự, test trên con lenovo của mình và hđh của thằng này nó chặn luôn service lẫn notification nếu đang ở ngoài app
Vậy, ví dụ như có một người nào đó không rành về công nghệ nhưng muốn sử dụng ứng dụng của mình thì phải làm sao?
Liệu có cái quyền nào giải quyết được không? ( Chẳng hạn như quyền quản trị thiết bị, …)
Bạn có thể thông báo cho họ và hướng dẫn họ cách truy cập vào quyền quản trị thiết bị khi mới lần đầu họ vô app của bạn. Một cách nữa là phát hiện dòng máy họ đang xài và tuỳ vào dòng máy, mở luôn app quản trị của nó để họ enable thủ công
Ok.
Cảm ơn RootOnChair nha!
Nhưng mình vừa tìm thấy một điểm rất đặc biệt.
Ví dụ mình cài một cái app hẹn giờ thì “Trình quản lí di động” lại cho phép nó tự khởi chạy, mặc dù ứng dụng hẹn giờ đó không cần quyền gì đặc biệt cả.
Không biết họ dùng cách nào luôn á?
( Link của ứng dụng hẹn giờ:" https://github.com/steventrigg/AlarmClock)
Sau khi lục lọi đống code thì mình thấy họ đã sử dụng Alarm Manager của hệ thống để gọi service.
// AlarmClock/AlarmClock/src/com/trigg/alarmclock/AlarmManagerHelper.java
private static void setAlarm(Context context, Calendar calendar, PendingIntent pIntent) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
}
}
Bạn có thể so sánh giữa code bạn và họ để tìm sự khác biệt. Do có quá ít thông tin nên mình không thể nói được gì nhiều
À, mình cồn một 1 khúc mắc nữa, mong bạn giúp với!
Cũng là cái service như ban đầu mình nói nhưng mình muốn nó tự động chạy lại khi điện thoại khởi động lại( có nghĩa là service đang chạy thì điện thoại bị tắt).
Mình cũng đã thử bằng cách tạo một Broadcast Receiver để lắng nghe khi nào điện thoại khởi đông xong thì chạy lại service. Nhưng nếu làm vậy thì sau khi khởi động xong khoảng 1 phút thì service mới chạy lại.
Vậy mình phải làm sao đây?
Bạn không cần phải làm gì cả. Quyết định chạy service là do hđh. Với lại đâu phải khởi động lại, màn hình sáng là xong đâu. Còn nhiều setup khác hđh phải lo ở background mà
Thanks you very much!