[안드로이드 공부]/알림 8

[안드로이드] 6.0 마시멜로 DOZE 모드 adb 명령

마시멜로우는 배터리 미 충전 중, 오래 동안 폰 켜지 않을 경우 Doze 모드로 들어가서 낮잠을 주무신다... 이때는 알람이고 뭐고... 거의 받을 수 없는 상태가 되기에 꼭 실행 해야 할 작업이 있을 경우는 Doze모드를 해제 해야 한다. 그 때 필요한 작업은? 1. 다음 명령어를 통해 배터리가 충전되지 않도록 변경 합니다. $ adb shell dumpsys battery unplug2. 디바이스 스크린을 끕니다. 3. 다음 명령어를 반복 실행 하여, 디바이스 상태가 idle이 되도록 합니다.$ adb shell dumpsys deviceidle step4. 화면을 켜거나, 디바이스를 크게 움직이면 Doze 모드에서 빠져나옵니다. 5. 다음 명령어를 통해 배터리 충전 상태를 원래되로 되돌릴 수 있습니..

[FLAG_UPDATE_CURRENT의 비밀]Permission Denial: broadcasting Intent is not exported from uid

같은 어플리케이션 내에서 브로드캐스트를 주고 받는데 외부에서 접근하려고 한다는 에러가 뜬다. 참으로 골치 아픈 에러다.... W/BroadcastQueue: Permission Denial: broadcasting Intent act=com.comostudio.xxx flg=0x10000010 cmp=com.comostudio.xxx/.receiver.yyy } bnds=[556,596][768,692] from com.comostudio.xxx (pid=-1, uid=10000) is not exported from uid 10050 due to receiver com.comostudio.xxx/.receiver.yyy 아무리 인터넷을... 구글링을 해봐도 딱히 맞는 답이 없다. 1. 물론 export..

브로드캐스트 리시버에서 하지 말아야 할 것들

안드로이드 브로드캐스트 리시버에서 하지 말아야 할 것들... 일단 생각 나는 것부터 적어 보자. 1. 프로그래스 다이얼로그를 쓰지 말자. 2. asyncTask를 쓰지 말자. android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 둘 다 위와 같은 에러가 난다. 왜냐? 브로드 캐스트는 시스템 스레드에서 도는데 1, 2번은 UI 스레드에서 돌기 때문이다. '결국, 너는 누구냐?' 가 된다

안드로이드 노티피케이션 여러줄 생성

안드로이드 4.1 젤리빈 이후 부터는 노티피케이션이 할 수 있는 일이 정말 많아졌으며, 사용하기 쉽게 변했다. 여러줄을 생성 할 수도 있는데, 아래와 같이 하면 된다. bigText()에 긴 텍스트를 넣어주면 된다. mBuilder = new Notification.Builder(mContext); mBuilder.setSmallIcon(R.mipmap.ic_launcher); mBuilder.setAutoCancel(false); mBuilder.setContentTitle(title); mBuilder.setStyle(new Notification.BigTextStyle().bigText(big)); mBuilder.setContentIntent(PIntent); mBuilder.setDefaults..

안드로이드 노티피케이션 지우지 않기(고정), Led 출력하기

노티 영역에서 지우기를 해도 남아있게 하기mNotification.flags = Notification.FLAG_NO_CLEAR; 노티가 왔을 때 LED로 알려주기mNotification.defaults = Notification.DEFAULT_LIGHTS;Led 대신DEFAULT_SOUND, DEFAULT_VIBRATE 을 설정 할 수도 있다. 사용자 설정 LED 값mNotification.ledARGB = Color.GREEN; mNotification.ledOnMS = 4000; mNotification.ledOffMS = 1000;mNotification.flags |= Notification.FLAG_SHOW_LIGHTS;

글로벌 알람매니저 등록과 취소 하는 법

앱이 눈에 보일 때만 알람매니저를 가지고 놀 생각이라면, 그냥 알람매니저 만들고 인텐트 만들어서 펜딩 시킨 뒤, cancel만 해주면 끝난다. 하지만, 알람 매니저를 글로벌로 사용할 경우 즉, 앱이 떠있거나, 덮여있거나, 자고 있거나 항상 동작하여야 할 경우에는 약간의 컨트롤을 해주어야 한다. public static AlarmManager mAlarmMgr = null; public static PendingIntent mAlarmIntent = null; public void setAlarmManager(){ mAlarmMgr = (AlarmManager) mContext.getApplicationContext().getSystemService(Context.ALARM_SERVICE); Intent ..

브로드캐스트리시버 2개 이상 사용시, 부팅후 동적 재등록

1. 브로드캐스트리시버(BroadcastReceiver)를 사용해서 액티비티등에 다시 브로드캐스트를 보낼 수있다. 하지만, 만약 2개 이상의 브로드캐스트리시버를 등록할 경우엔 고려해야 할 점이 있다. public void registerR(){ IntentFilter filter = new IntentFilter(); filter.addAction(DO_1); registerReceiver(mIntentReceiver, filter); IntentFilter filterBoot = new IntentFilter(); filterBoot.addAction(DO_2); registerReceiver(mIntentReceiver, filterBoot); }위와같이 필터를 각각 만들어 주어야 하며, 리시버는 하..