Android O OS에서 Boradcast 제약사항이 추가되었습니다.

자세한 사항은 구글 개발자 사이트에 다음과 같이 소개되어 있습니다.

https://developer.android.com/about/versions/oreo/background.html#broadcasts



요약하면 앱은 더 이상 명시적 브로드캐스트를 제외한 리시버를 AndroidManifest.xml에 등록할 수 없습니다.

암시적 브로드캐스트 리시버는 런타임에 Context.registerReceiver()를 통해서만 등록이 가능합니다.


단, 서명 권한이 요구되는 브로드캐스트는 암시적 브로드캐스트 제한에서 제외됩니다.

이는 동일한 인증서로 서명된 앱으로만 브로드캐스트가 전송되기 때문입니다.


이 부분에 대해 조금 더 자세히 이야기하면 다음과 같습니다.



Broadcast Receiver는 AndroidManifest.xml에 다음과 같이 퍼미션을 정의하고, 리시버를 등록할 수 있습니다.

<permission android:name="your.permission.name" android:protectionLevel=signature"/>

...

<receiver

    android:name="your.reciever.name"

    android:permission="your.permission.name"

    <intent-filter>

        <action android:name="your.action.name" />

    </intent-filter>

</receiver>



Broadcast의 Sender는 다음과 같은 API를 통해 암시적 브로드캐스트를 전송할 수 있습니다. 

이때, ReceiverPermission을 함께 전달해야합니다.

 sendBroadcast(Intent intent, String receiverPermission)

Broadcast the given intent to all interested BroadcastReceivers, allowing an optional required permission to be enforced.



예를 들면 아래와 같습니다. 

context.sendBroadcast(new Intent("your.action.name"), "your.permission.name")


암시적 브로드캐스트를 전송할 때, 퍼미션을 명시해주면 해당 퍼미션을 가진 Receiver에게만  브로드캐스트가 전송되므로, 암시적 브로드캐스트 제약에서 자유롭습니다.

'Study > Android' 카테고리의 다른 글

Android O OS Unknown apps Persmission 관련 내용 정리  (0) 2017.10.23
Posted by Worr
,

Android O OS에서 Unknown apps 설치와 관련하여 Permission 모델에 변경이 있엇습니다.


https://developer.android.com/guide/topics/permissions/requesting.html


O OS 이전까지 Settings에 존재하던,  "Allow Unknown source" 옵션이 제거되고, 

각 App의 Application 정보에 해당 옵션이 들어갑니다.


즉, 각 앱별로 Package Installer로 APK 설치를 요청할 수 있는지 옵션이 추가됩니다.


자신의 App에서 APK 설치를 요청해야할 경우, 반드시 아래와 같이 Permission 사용을 AndroidManifest.xml에 명시해야 합니다.


<manifest>
   
<uses-permission
       
android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

   
<application>
      ...
   
</application>
</manifest>


M OS에서 추가된 Runtime Permission모델과 달리 기본적으로 App에서 해줄 것은 위와 같이 Permission 추가뿐입니다.


권한을 추가하고, APK설치를 요청할 경우 (Intent.REQUEST_INSTALL_PACKAGES),

Package Installer에서 알아서 시스템 다이얼로그를 통해 사용자에게 Unknown source app을 허용할 것인지 유저에게 묻습니다.

'Study > Android' 카테고리의 다른 글

Android O OS Broadcast Limitations 정리  (0) 2017.10.30
Posted by Worr
,