Trong ứng dụng của tôi, tôi đã đăng ký bộ thu phát sóng để nhận ý định hệ thống ACTION_DEVICE_STORAGE_LOW. Tôi đã mong đợi điều này được phát sóng bất cứ khi nào điện thoại có bộ nhớ trong thấp. Vì vậy, tôi đã tải xuống một vài ứng dụng bổ sung (điện thoại của tôi có bộ nhớ trong rất nhỏ) khiến hệ điều hành hiển thị thông báo rằng bộ nhớ hệ thống thấp. Điện thoại còn lại 10 - 15 MB. Tuy nhiên, người nhận phát sóng của tôi chưa bao giờ nhận được ý định đó. Tuy nhiên, thông báo hệ thống vẫn nằm trong thanh thông báo và tôi không thể duyệt internet do bộ nhớ trong thấp.Mục đích ACTION_DEVICE_STORAGE_LOW được phát khi nào?
Mục đích này có được phát sóng bất cứ khi nào thông báo bộ nhớ trong thấp được hiển thị không? Hoặc là có một số thậm chí thấp hơn ngưỡng bộ nhớ mà sẽ gửi phát sóng này mà tôi đã không nhấn chưa trên điện thoại của tôi? Trong tài liệu, nó chỉ nói "Broadcast Action: Một phát sóng dính chỉ ra tình trạng bộ nhớ thấp trên thiết bị." Vì nó không thực sự xác định "tình trạng bộ nhớ thấp", tôi không biết nếu tôi làm điều gì đó sai, hoặc nếu tôi chỉ đơn giản là chưa đạt được điều kiện đó.
Đây là mã cho BroadCastReceiver tôi:
public class MemoryBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
Log.isExternalStorageProblem = false;
Log.clearNotification(Log.externalMemoryNotificationID);
}
if (action.equals(Intent.ACTION_DEVICE_STORAGE_OK)) {
Log.isInternalStorageLow = false;
Log.clearNotification(Log.internalMemoryNotificationID);
}
if (action.equals(Intent.ACTION_DEVICE_STORAGE_LOW)) {
Log.isInternalStorageLow = true;
Log.displayMemoryNotification("Internal Storage Low",
"The internal storage is low, Please fix this.",
"Please clear cache and/or uninstall apps.", Log.internalMemoryNotificationID);
}
}
}
Tôi đã một dịch vụ mà khởi đầu thu, bổ sung thêm các bộ lọc ý định và đăng ký nó (trong số những thứ khác):
private MemoryBroadcastReceiver memoryBroadcastReciever = new MemoryBroadcastReceiver();
public void registerBroadcastReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_DEVICE_STORAGE_OK);
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_DEVICE_STORAGE_LOW);
filter.addDataScheme("file");
this.getApplicationContext().registerReceiver(memoryBroadcastReciever, filter);
}
@Override
public void onCreate() {
registerBroadcastReceiver();
}
vui lòng đăng mã của bạn tại đây –
Tôi vừa đăng mã của mình. Câu trả lời của DallaRosa rất tuyệt và tôi nghĩ anh ấy đúng về việc phát sóng được gửi ở mức 10% dung lượng lưu trữ nội bộ còn lại, nhưng tôi vẫn chưa thể nhận được chương trình phát sóng. – mattgmg1990
Trong trường hợp ai đó quan tâm, tôi đã tìm thấy câu trả lời cho vấn đề của tôi khi phát sóng. Nó chỉ ra rằng ý định này phù hợp với dữ liệu mặc định (có nghĩa là không thêm bất kỳ lược đồ dữ liệu nào vào bộ lọc ý định). Sau đó, nó phù hợp với hành động mà không có một vấn đề. Tôi đã tạo hai bộ lọc để khớp với ba hành động mà tôi đã lên kế hoạch nhận vì ACTION_MEDIA_MOUNTED cần thêm tệp dữ liệu. – mattgmg1990