제1행 코드 제3판 제6장 6.3 사용자 정의 방송 보내기

6.3 사용자 정의 브로드캐스트 보내기


6.3.1 표준방송 송신


기본적으로 사용자 정의 브로드캐스트는 암시적 브로드캐스트입니다.
4
  • 이 방송을 수신하기 위해 BroadcastReceiver를 먼저 만듭니다. 안드로이드 매니페스트에서.xml에서 이 BroadcastReceiver가 우리가 보낸 방송을 수신하도록 수정되었습니다

  • 4
  • 사용자 정의 방송을 보내는 논리: 1.Intent 객체를 구성하고 보낼 브로드캐스트의 값을 전달합니다. 2.Intent의 setPackage() 방법을 호출하고 현재 응용 프로그램의 패키지 이름을 가져옵니다.3. 마지막으로 sendBroadcast를 호출하여 라디오를 보냅니다
  • 
    
    //       Intent  ,           
               val intent = Intent("com.example.broadcasttest.MY_BROADCAST")
               intent.setPackage(packageName)//setPackage()—           
               sendBroadcast(intent)//    ,
               //   com.example.broadcasttest.MY_BROADCAST     BroadcastReceiver      
    
         <receiver android:name=".MyBroadcastReceiver"
               android:enabled="true"
               android:exported="true">
               <intent-filter>
                   <action android:name="com.example.broadcasttest.MY_BROADCAST">action>
               intent-filter>
           receiver>
    

    6.3.2 순차적 브로드캐스트 전송


    기본적으로 같은 표준 방송, 방송 발송 시:sendOrderedBroadcast() 방법을 사용하면 모든 방송 수신기에 우선순위를 설정할 수 있고, 방송 수신기의 onReceive() 방법에서abortBroadcast() 방법을 사용하면 전달을 중지할 수 있다.
    val intent = Intent("com.swpu.ylq.broadcasttest.MY_BROADCAST")
                intent.setPackage(packageName)//setPackage()—           
                //sendBroadcast(intent)//    ,
                sendOrderedBroadcast(intent,null)//      
                //   com.example.broadcasttest.MY_BROADCAST     BroadcastReceiver      
    
     <receiver
                android:name=".MyBroadcastReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter android:priority="100">
                    <action android:name="com.swpu.ylq.broadcasttest.MY_BROADCAST" />
                intent-filter>
            receiver>
    
    class MyBroadcastReceiver:BroadcastReceiver() {
       override fun onReceive(context: Context?, intent: Intent?) {
           Toast.makeText(context,"received in MyBroadcastReceiver",Toast.LENGTH_SHORT).show()
           abortBroadcast()
       }
    }
    

    좋은 웹페이지 즐겨찾기