노무현 전 대통령 서거 추모글 남기기

'2018/04'에 해당되는 글 1건

  1. 2018.04.03 BroadcastQueue: Background execution not allowed: receiving Intent

어플 개발중에 다른 어플과 연동을할 일이 있어서 sendBroadcast(intent)를 해서 사용하는데


가끔 실행을 해도 먹어 버리고 실행이 안된다.


그전에 비슷한 경우가 있었는데 이번 경우는 BroadcastQueue: Background execution not allowed: receiving Intent{


어쩌구 저쩌구라고 로그가 찍힌다.


대충 찾아보면 Android 8.0 Oreo에서 배터리 절약을 위해 암시적 Broadcast가 제한이 있다는거 같다.


근데 주고 받을 앱이 8.0이 아니면 문제 없다는거 같은데 OS가 8.0인 폰에서 해도 나오는 듯하다.


구글링을 해봤는데 제한이 있을거다 이런 얘기만 있고 해결책이 없다.


리시버를 받는 곳에 퍼미션을 지정해서 부르는 곳에 같이 넣어준다면 된다는 얘기가 있는데 받는 곳은 일단 내가 바꿀 수가 없어서 패쓰..


더 찾아보다가

private void sendImplicitBroadcast(Context ctxt, Intent i) 

PackageManager pm=ctxt.getPackageManager(); 

List<ResolveInfo> matches=pm.queryBroadcastReceivers(i, 0);

for (ResolveInfo resolveInfo : matches) {

Intent explicit=new Intent(i);

ComponentName cn= new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName, resolveInfo.activityInfo.name);

explicit.setComponent(cn);

ctxt.sendBroadcast(explicit);

}

}

이런게 있어서 적용해 봤는데 일단 된다.


일단 적용해보고 해결이 됐으면 좋겠네..

Posted by Kelly Cook
,