예제를 시작하기 전에 Android에서 인텐트 필터가 무엇인지 알아야 합니다. 의도 필터는 IntentFilter 클래스의 인스턴스입니다. 인텐트 필터는 암시적 인텐트를 사용하는 동안 유용합니다. Java 코드에서는 처리되지 않으며 AndroidManifest.xml에서 설정해야 합니다. 인텐트 필터가 인텐트 및 작업에 대한 정보를 Android에 제공할 수 있도록 Android는 어떤 종류의 인텐트를 실행하는지 알아야 합니다.
인텐트를 실행하기 전에 Android는 액션 테스트, 카테고리 테스트 및 데이터 테스트를 테스트합니다. 이 예시는 안드로이드에서 브로드캐스트 수신기에 커스텀 인텐트 필터를 사용하는 방법을 보여줍니다.
1단계 − Android Studio에서 새 프로젝트를 생성하고 파일 ⇒ 새 프로젝트로 이동하여 필요한 모든 세부 정보를 입력하여 새 프로젝트를 생성합니다.
2단계 − res/layout/activity_main.xml에 다음 코드를 추가합니다.
사전> 위의 코드에는 두 개의 버튼이 있습니다. 하나는 인텐트를 등록하는 것이고 다른 하나는 브로드캐스트에 데이터를 보내기 위한 것입니다.
패키지 com.example.andy.myapplication;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android. support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.RadioButton;import android.widget.Toast;public class MainActivity extends AppCompatActivity { RadioButton 라디오 버튼; @Override protected void onCreate(Bundle storedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 최종 버튼 버튼 =findViewById(R.id.buton); 최종 버튼 보내기 =findViewById(R.id.buton1); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent("com.example.andy.CUSTOM_INTENT"); sendBroadcast(intent); } }); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { registerReceiver(mMessageReceiver,new IntentFilter("com.example.andy.CUSTOM_INTENT")); } }); } private BroadcastReceiver mMessageReceiver =new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Intent String에 포함된 데이터 추출 message =intent.getAction(); Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show(); } }; @Override 보호 무효 onPause() { super.onPause(); unregisterReceiver(mMessageReceiver); }}버튼을 클릭하면 아래와 같이 사용자 지정 브로드캐스트 동작을 사용하여 수신기를 등록합니다. -
registerReceiver(mMessageReceiver,new IntentFilter("com.example.andy.CUSTOM_INTENT"));동적 브로드캐스트 수신기이므로 아래와 같이 onPause()를 등록 해제해야 합니다.
unregisterReceiver(mMessageReceiver);방송을 보낼 수 있는 버튼이 하나 더 있습니다. 아래와 같이 수신기를 등록하기 위해 액션과 데이터를 보낼 것입니다. -
Intent intent=new Intent("com.example.andy.CUSTOM_INTENT");sendBroadcast(intent);동적 브로드캐스트 레지스터이므로 브로드캐스트 수신기에 대한 새 수신기 파일을 만들 필요가 없으므로 아래와 같이 동일한 활동에서 브로드캐스트 수신기를 선언했습니다. -
private BroadcastReceiver mMessageReceiver =new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Intent String에 포함된 데이터 추출 message =intent.getAction(); Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show(); }};위의 코드에서는 Intent에서 데이터를 작업으로 가져와 Toast에 인쇄합니다. 응용 프로그램을 실행해 보겠습니다. 실제 Android 모바일 장치를 컴퓨터에 연결했다고 가정합니다. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고 도구 모음에서 실행 아이콘을 클릭합니다. 모바일 장치를 옵션으로 선택한 다음 기본 화면을 표시할 모바일 장치를 확인하십시오 -
먼저 "인텐트 필터 등록 버튼"을 클릭하여 수신기를 등록하고 아래와 같이 데이터 보내기를 클릭하여 토스트를 표시합니다. -