私のアプリケーションでは、システムインテントACTION_DEVICE_STORAGE_LOWを受信するためにブロードキャストレシーバを登録しました。私は、携帯電話の内部メモリが不足しているときはいつでも、これが放送されることを期待していました。だから、私はいくつかのアプリをダウンロードした(私の電話は非常に小さな内部メモリを持っている)ので、システムメモリが低いという通知をOSに表示させた。電話機の残量は10〜15 MBです。しかし、私の放送受信機は決してその意図を受けなかった。しかし、システム通知は通知バーにとどまり、内部メモリが不足しているためインターネットを閲覧できません。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);
}
}
}
私は受信機を初期化サービスは、インテントフィルタを追加し、(他のものの間)に登録している:ここで
は私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();
}
ここにコードを投稿してください –
私のコードを投稿しました。 DallaRosaの答えは素晴らしく、10%の内蔵ストレージが残っていると放送がうまくいくと思いますが、まだ放送を受信できませんでした。 – mattgmg1990
誰かが興味がある場合、私は放送を受信する私の問題に答えを見つけました。このインテントはデフォルトのデータスキーマと一致しています(インテントフィルタにデータスキームを追加しないこと)。その後、問題なく動作にマッチします。 ACTION_MEDIA_MOUNTEDにファイルのデータスキーマが追加されている必要があるため、私が受け取った3つのアクションと一致する2つのフィルタを作成しました。 – mattgmg1990