[英]Incoming call listener sleeps after couple of hours
在過去的幾周里,我面臨着Android中的電話管理器API的問題 - 基於監聽器開始錄制的呼入監聽器以及結束呼叫停止錄制(流程正常工作)
問題
我面臨的問題是,在一些手機中它一直在工作,但在一些手機中,電話管理器的廣播聽眾在幾個小時后就停止工作了。 經過一些研究,我找到了一個使用喚醒鎖來防止CPU睡眠的解決方案,我嘗試了這個但是徒勞無功。
@Override
public void onReceive(Context context, Intent intent) {
//We listen to two intents. The new outgoing call only tells us of an
//outgoing call. We use it to get the number.
roPlantPrefs = RoPlantPrefs.getInstance(context);
databaseHelper = new DatabaseHelper(context);
//lastState = roPlantPrefs.getLastState();
if (roPlantPrefs.getLogin()) {
if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
} else {
roPlantPrefs = RoPlantPrefs.getInstance(context);
// if (!roPlantPrefs.getIsOnCall()) {
String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
int state = 0;
if (stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
state = TelephonyManager.CALL_STATE_IDLE;
} else if (stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
state = TelephonyManager.CALL_STATE_OFFHOOK;
} else if (stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
state = TelephonyManager.CALL_STATE_RINGING;
}
onCallStateChanged(context, state, number);
}
}
// }
}
我還使用了timer and alarm manger
但它最多工作2到3個小時,然后聽眾停止工作,任何幫助都可以得到贊賞。
我從Oppo,Vivo,Mi等手機上遇到了同樣的問題,從最近的應用程序中移除應用程序后,甚至服務被殺死
解決方案:我在我的應用程序中添加了這樣的自動啟動權限,並且它有效。
解決此問題后,由於DOZE模式,我的應用程序在后台運行一段時間后被凍結/殺死
解決方案:對於這種情況,只需轉到 - >設置 - >電池選項,並允許您的應用在后台運行,如果這樣做,DOZE模式不會影響您的應用,
干杯
嘗試這個設置的意圖然后把你的應用程序名稱(不要優化)為sdk 23及以上
Intent intent = new Intent();
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
}
startActivity(intent);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.