이 예는 Android에서 상태 표시줄 알림을 가로챌 수 있는 방법을 보여줍니다.
1단계 − Android Studio에서 새 프로젝트를 생성하고 파일 ⇒ 새 프로젝트로 이동하여 필요한 모든 세부 정보를 입력하여 새 프로젝트를 생성합니다.
2단계 − src/MyListener.java에 다음 코드 추가
공개 인터페이스 MyListener { 무효 setValue(문자열 패키지 이름);}
3단계 − src/MyListener.java에 다음 코드 추가
패키지 app.tutorialspoint.com.notifyme;import android.content.Context;import android.service.notification.NotificationListenerService;import android.service.notification.StatusBarNotification;import android.util.Log;public class NotificationService extends NotificationListenerService { 개인 문자열 TAG =이 .getClass().getSimpleName(); 컨텍스트 컨텍스트; 정적 MyListener myListener; @Override 공개 무효 onCreate() { super .onCreate(); 컨텍스트 =getApplicationContext(); } @Override public void onNotificationPosted (StatusBarNotification sbn) { 로그. i ( 태그 , "************ onNotificationPosted" ); 통나무. i ( TAG , "ID :" + sbn.getId() + " \t " + sbn.getNotification().tickerText + " \t " + sbn.getPackageName()); myListener .setValue( "포스트:" + sbn.getPackageName()); } @Override public void onNotificationRemoved (StatusBarNotification sbn) { 로그. 나는 ( 태그 , "************ onNotificationRemoved" ); 통나무. i ( TAG , "ID :" + sbn.getId() + " \t " + sbn.getNotification().tickerText + " \t " + sbn.getPackageName()); myListener .setValue( "제거:" + sbn.getPackageName()); } 공개 무효 setListener (MyListener myListener) { 알림 서비스. myListener =myListener; }}
4단계 − res/menu/menu_main.xml에 다음 코드를 추가합니다.
<전> xml 버전 ="1.0" 인코딩 ="utf-8" ?><메뉴 xmlns:android ="https://schemas.android.com/apk/res/android" xmlns:앱 ="https://schemas.android .com/apk/res-auto" xmlns:도구 ="https://schemas.android.com/tools" 도구:context =".MainActivity">5단계 − res/layout/activity_main.xml에 다음 코드를 추가합니다.
<전> xml 버전 ="1.0" 인코딩 ="utf-8" ?>6단계 − src/MainActivity.java
에 다음 코드 추가패키지 app.tutorialspoint.com.notifyme;import android.app.NotificationChannel;import android.app.NotificationManager;import android.content.Intent;import android.os.Bundle;import android.support.v4.app.NotificationCompat;import android.support.v7.app.AppCompatActivity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity 확장 AppCompatActivity 구현 MyListener { private TextView txtView; 공개 정적 최종 문자열 NOTIFICATION_CHANNEL_ID ="10001"; 개인 최종 정적 문자열 default_notification_channel_id ="기본"; @Override 보호된 무효 onCreate(SavedInstanceState 번들) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); 새로운 NotificationService().setListener( this ); txtView =findViewById(R.id.textView ); 버튼 btnCreateNotification =findViewById(R.id.btnCreateNotification ); btnCreateNotification.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { NotificationManager mNotificationManager =(NotificationManager) getSystemService( NOTIFICATION_SERVICE ); NotificationCompat.Builder mBuilder =new NotificationCompat.Builder(MainActivity. this, default_notification_channel_id ) .setContentTitle( "내 알림" ); mBuilder.setContentText( "알림 수신기 서비스 예" ); mBuilder.setTicker( "알림 수신기 서비스 예" ); mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground ); mBuilder.setAutoCancel( true ); if (android.os.Build.VERSION. SDK_INT>=android.os.Build.VERSION_CODES. O ) { int 중요성 =NotificationManager. IMPORTANCE_HIGH; NotificationChannel notificationChannel =new NotificationChannel( NOTIFICATION_CHANNEL_ID , "NOTIFICA TION_CHANNEL_NAME" , 중요도); mBuilder.setChannelId( NOTIFICATION_CHANNEL_ID ); 어설션 mNotificationManager !=null; mNotificationManager.createNotificationChannel(notificationChannel); } 어설션 mNotificationManager !=null; mNotificationManager.notify(( int ) 시스템.currentTimeMillis() , mBuilder.build()); } }); } @Override public 부울 onCreateOptionsMenu(메뉴 메뉴) { getMenuInflater().inflate(R.menu.menu_main, menu); //메뉴 리소스, 메뉴는 true를 반환합니다. } @Override public boolean onOptionsItemSelected (MenuItem item) { switch (item.getItemId()) { case R.id. action_settings :의도 의도 =new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" ); 시작 활동(의도); true를 반환합니다. 기본값:반환 super .onOptionsItemSelected(item); } } @Override public void setValue (String packageName) { txtView .append( " \n " + packageName); }}
7단계 − AndroidManifest.xml에 다음 코드 추가
<전> xml 버전 ="1.0" 인코딩 ="utf-8" ?>응용 프로그램을 실행해 보겠습니다. 실제 Android 모바일 장치를 컴퓨터에 연결했다고 가정합니다. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고 도구 모음에서 실행 아이콘을 클릭합니다. 모바일 장치를 옵션으로 선택한 다음 기본 화면을 표시할 모바일 장치를 확인하십시오 -