Computer >> Máy Tính >  >> Lập trình >> Android

Làm cách nào để chặn Thông báo trên thanh trạng thái trong Android?

Ví dụ này minh họa về Cách tôi có thể chặn Thông báo trên thanh trạng thái trong Android

Bước 1 - Tạo một dự án mới trong Android Studio, đi tới Tệp ⇒ Dự án Mới và điền tất cả các chi tiết cần thiết để tạo một dự án mới.

Bước 2 - Thêm mã sau vào src / MyListener.java

public interface MyListener {
   void setValue (String packageName) ;
}

Bước 3 - Thêm mã sau vào src / MyListener.java

package 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 {
   private String TAG = this .getClass().getSimpleName() ;
   Context context ;
   static MyListener myListener ;
   @Override
   public void onCreate () {
      super .onCreate() ;
      context = getApplicationContext() ;
   }
   @Override
   public void onNotificationPosted (StatusBarNotification sbn) {
      Log. i ( TAG , "********** onNotificationPosted" ) ;
      Log. i ( TAG , "ID :" + sbn.getId() + " \t " + sbn.getNotification(). tickerText + " \t " + sbn.getPackageName()) ;
      myListener .setValue( "Post: " + sbn.getPackageName()) ;
   }
   @Override
   public void onNotificationRemoved (StatusBarNotification sbn) {
      Log. i ( TAG , "********** onNotificationRemoved" ) ;
      Log. i ( TAG , "ID :" + sbn.getId() + " \t " + sbn.getNotification(). tickerText + " \t " + sbn.getPackageName()) ;
      myListener .setValue( "Remove: " + sbn.getPackageName()) ;
   }
   public void setListener (MyListener myListener) {
      NotificationService. myListener = myListener ;
   }
}

Bước 4 - Thêm mã sau vào res / menu / menu_main.xml.

<? xml version = "1.0" encoding = "utf-8" ?>
<menu xmlns: android = "https://schemas.android.com/apk/res/android"
   xmlns: app = "https://schemas.android.com/apk/res-auto"
   xmlns: tools = "https://schemas.android.com/tools"
   tools :context = ".MainActivity" >
   <item
      android :id = "@+id/action_settings"
      android :orderInCategory = "100"
      android :title = "Settings"
      app :showAsAction = "never" />
</menu>

Bước 5 - Thêm mã sau vào res / layout / activity_main.xml.

<? xml version = "1.0" encoding = "utf-8" ?>
<RelativeLayout xmlns: android = "https://schemas.android.com/apk/res/android"
   xmlns: tools = "https://schemas.android.com/tools"
   android :layout_width = "match_parent"
   android :layout_height = "match_parent"
   android :padding = "16dp"
   tools :context = ".MainActivity" >
   <Button
      android :id = "@+id/btnCreateNotification"
      android :layout_width = "wrap_content"
      android :layout_height = "wrap_content"
      android :layout_alignParentStart = "true"
      android :layout_alignParentTop = "true"
      android :layout_alignParentEnd = "true"
      android :text = "Create Notification" />
   <ScrollView
      android :layout_width = "match_parent"
      android :layout_height = "match_parent"
      android :layout_below = "@+id/btnCreateNotification"
      android :layout_alignStart = "@+id/btnCreateNotification"
      android :layout_alignEnd = "@+id/btnCreateNotification"
      android :layout_alignParentBottom = "true" >
      <TextView
         android :id = "@+id/textView"
         android :layout_width = "match_parent"
         android :layout_height = "wrap_content"
         android :text = "NotificationListenerService Example"
         android :textAppearance = "?android:attr/textAppearanceMedium" />
   </ScrollView>
</RelativeLayout>

Bước 6 - Thêm mã sau vào src / MainActivity.java

package 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 extends AppCompatActivity implements MyListener {
   private TextView txtView ;
   public static final String NOTIFICATION_CHANNEL_ID = "10001" ;
   private final static String default_notification_channel_id = "default" ;
   @Override
   protected void onCreate (Bundle savedInstanceState) {
      super .onCreate(savedInstanceState) ;
      setContentView(R.layout. activity_main ) ;
      new NotificationService().setListener( this ) ;
      txtView = findViewById(R.id. textView ) ;
      Button 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 ) ;
            mBuilder.setContentTitle( "My Notification" ) ;
            mBuilder.setContentText( "Notification Listener Service Example" ) ;
            mBuilder.setTicker( "Notification Listener Service Example" ) ;
            mBuilder.setSmallIcon(R.drawable. ic_launcher_foreground ) ;
            mBuilder.setAutoCancel( true ) ;
            if (android.os.Build.VERSION. SDK_INT >= android.os.Build.VERSION_CODES. O ) {
               int importance = NotificationManager. IMPORTANCE_HIGH ;
               NotificationChannel notificationChannel = new NotificationChannel( NOTIFICATION_CHANNEL_ID , "NOTIFICATION_CHANNEL_NAME" , importance) ;
               mBuilder.setChannelId( NOTIFICATION_CHANNEL_ID ) ;
               assert mNotificationManager != null;
               mNotificationManager.createNotificationChannel(notificationChannel) ;
            }
            assert mNotificationManager != null;
            mNotificationManager.notify(( int ) System. currentTimeMillis () , mBuilder.build()) ;
         }
      }) ;
   }
   @Override
   public boolean onCreateOptionsMenu (Menu menu) {
      getMenuInflater().inflate(R.menu. menu_main , menu) ; //Menu Resource, Menu
      return true;
   }
   @Override
   public boolean onOptionsItemSelected (MenuItem item) {
      switch (item.getItemId()) {
         case R.id. action_settings :
            Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" ) ;
            startActivity(intent) ;
            return true;
         default :
            return super .onOptionsItemSelected(item) ;
      }
   }
   @Override
   public void setValue (String packageName) {
      txtView .append( " \n " + packageName) ;
   }
}

Bước 7 - Thêm mã sau vào AndroidManifest.xml

<? xml version = "1.0" encoding = "utf-8" ?>
<manifest xmlns: android = "https://schemas.android.com/apk/res/android"
   package = "app.tutorialspoint.com.notifyme" >
   <uses-permission android :name = "android.permission.VIBRATE" />
   <application
      android :allowBackup = "true"
      android :icon = "@mipmap/ic_launcher"
      android :label = "@string/app_name"
      android :roundIcon = "@mipmap/ic_launcher_round"
      android :supportsRtl = "true"
      android :theme= "@style/AppTheme" >
      <activity android :name = ".MainActivity" >
         <intent-filter>
            <action android :name = "android.intent.action.MAIN" />
            <category android :name= "android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
      <service
         android :name = ".NotificationService"
         android :label = "@string/app_name"
         android :permission = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
         <intent-filter>
            <action android :name = "android.service.notification.NotificationListenerService" />
         </intent-filter>
      </service>
   </application>
</manifest>

Hãy thử chạy ứng dụng của bạn. Tôi giả sử bạn đã kết nối thiết bị Di động Android thực tế với máy tính của mình. Để chạy ứng dụng từ android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ. Chọn thiết bị di động của bạn làm tùy chọn, sau đó kiểm tra thiết bị di động sẽ hiển thị màn hình mặc định của bạn -

Làm cách nào để chặn Thông báo trên thanh trạng thái trong Android?