5分钟创建一个android监听通知服务

5分钟创建一个android监听通知服务

1、打开android studio,新建项目,选择一个基础的Activity

5分钟创建一个android监听通知服务

2、设置启动Activity名称

5分钟创建一个android监听通知服务
3、新建一个class,基类为android.service.notification.NotificationListenerService,勾选show select overrides dialog

5分钟创建一个android监听通知服务

4、选择需要重写的方法

5分钟创建一个android监听通知服务

5分钟创建一个android监听通知服务

5、在onNotificationPosted中记录通知的消息文字

Log.v("BFW", sbn.getNotification().tickerText.toString());

5分钟创建一个android监听通知服务

在AndroidManifest.xml加入

<service android:name="wiki.bfw.readnoticle.NotifyService" android:priority="1000" android:label="通知监控" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
            <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService">
            </action></intent-filter>
        </service>


5分钟创建一个android监听通知服务

6、在启动的activity中启动service

5分钟创建一个android监听通知服务

7、加入设置通知权限的方法

5分钟创建一个android监听通知服务

8、编译运行后的效果,先点击右下角图标,调到授权页面,授权app使用通知监听

5分钟创建一个android监听通知服务

5分钟创建一个android监听通知服务

9、模拟器中发布一条短信

5分钟创建一个android监听通知服务

10、我们可以看到日志中打印出刚才的短信内容,监听成功了

5分钟创建一个android监听通知服务

主要代码如下

NotifyActivity.java

package wiki.bfw.readnoticle;

import android.content.Intent;
import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.provider.Settings;
import android.view.View;

public class NotifyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notify);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        Intent intent = new Intent(NotifyActivity.this, NotifyService.class);//启动服务
        startService(intent);//启动服务
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent_s = new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
                startActivity(intent_s);
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

}

NotifyService.java

package wiki.bfw.readnoticle;

import android.content.Intent;
import android.os.IBinder;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;

public class NotifyService extends NotificationListenerService {
    @Override
    public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
        Log.v("BFW", sbn.getNotification().tickerText.toString());
        super.onNotificationPosted(sbn, rankingMap);
    }

    @Override
    public void onNotificationRemoved(StatusBarNotification sbn) {
        super.onNotificationRemoved(sbn);
    }

    @Override
    public IBinder onBind(Intent intent) {
        return super.onBind(intent);
    }

    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="wiki.bfw.readnoticle">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
    <uses-permission android:name="android.permission.INTERNET">

    <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" android:usescleartexttraffic="true">
        <activity android:name=".NotifyActivity" android:label="@string/title_activity_notify" android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN">

                <category android:name="android.intent.category.LAUNCHER">
            </category></action></intent-filter>
        </activity>
       

        <service android:name=".NotifyService" android:label="通知监控" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" android:priority="1000">
            <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService">
            </action></intent-filter>
        </service>
    </application>
</uses-permission></uses-permission></uses-permission></manifest>


{{collectdata}}

网友评论0