अपने आवेदन में, मैं एक प्रसारण रिसीवर प्रणाली आशय ACTION_DEVICE_STORAGE_LOW प्राप्त करने के लिए पंजीकृत किया है। जब भी फोन में आंतरिक आंतरिक मेमोरी थी, तो मैं इसे प्रसारित करने की उम्मीद कर रहा था। इसलिए, मैंने कुछ अतिरिक्त ऐप्स डाउनलोड किए हैं (मेरे फोन में बहुत छोटी आंतरिक मेमोरी है) जिससे ओएस अधिसूचना प्रदर्शित करता है कि सिस्टम मेमोरी कम है। फोन में 10 - 15 एमबी शेष था। हालांकि, मेरे प्रसारण रिसीवर को कभी इरादा नहीं मिला। फिर भी, सिस्टम अधिसूचना अधिसूचना बार में रहती है, और मैं कम आंतरिक स्मृति की वजह से इंटरनेट ब्राउज़ करने में सक्षम नहीं हूं।इरादा ACTION_DEVICE_STORAGE_LOW कब प्रसारित किया गया है?
जब भी निम्न आंतरिक मेमोरी अधिसूचना प्रदर्शित होती है तो क्या इस इरादे को प्रसारित किया जाना चाहिए? या क्या स्मृति की कुछ भी कम सीमा है जो इस प्रसारण को भेज देगी कि मैंने अभी तक अपने फोन पर नहीं मारा है? प्रलेखन में यह केवल "प्रसारण कार्य: एक चिपचिपा प्रसारण है जो डिवाइस पर कम स्मृति स्थिति इंगित करता है।" चूंकि यह वास्तव में "कम स्मृति की स्थिति" को परिभाषित नहीं करता है, इसलिए मुझे नहीं पता कि मैं कुछ गलत कर रहा हूं, या अगर मैंने अभी तक उस स्थिति को नहीं मारा है।
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);
}
}
}
मैं एक सेवा है जो रिसीवर initializes, है लक्ष्य फ़िल्टर कहते हैं और (अन्य बातों के अलावा) यह पंजीकृत करता है:
यहाँ मेरी BroadCastReceiver के लिए कोड है
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();
}
कृपया अपना कोड यहां पोस्ट करें –
मैंने अभी अपना कोड पोस्ट किया है। डल्लारोसा का जवाब बहुत अच्छा है और मुझे लगता है कि वह प्रसारण के बारे में सही है जो 10% आंतरिक भंडारण शेष पर भेजा जा रहा है, लेकिन मैं अभी भी प्रसारण प्राप्त करने में सक्षम नहीं हूं। – mattgmg1990
यदि कोई दिलचस्पी लेता है, तो मुझे प्रसारण प्राप्त करने में मेरी समस्या का उत्तर मिला। यह पता चला है कि यह इरादा डिफ़ॉल्ट डेटाशेम से मेल खाता है (जिसका अर्थ है इरादे फ़िल्टर में कोई डेटा स्कीम नहीं जोड़ना)। फिर यह किसी समस्या के बिना कार्रवाई से मेल खाता है। मैंने उन तीन कार्यों से मेल खाने के लिए दो फ़िल्टर बनाए जिन्हें मैं प्राप्त करने की योजना बना रहा था क्योंकि ACTION_MEDIA_MOUNTED को फ़ाइल डेटाशेम जोड़ा गया है। – mattgmg1990