Приложение не указано в настройках уведомлений доступа Android - PullRequest
0 голосов
/ 04 марта 2019

Я создаю приложение для доступа к некоторым уведомлениям, ниже приведены мои файлы AndroidManifest.xml.Я установил свое приложение, но когда я захожу в настройки доступа к уведомлениям divice, я не вижу своего приложения в списке, может ли кто-нибудь помочь мне с этим

<application
        android:name=".MyApplication"
        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"
        tools:ignore="GoogleAppIndexingWarning">

        <service
            android:name="com.example.myapp.otp.MyService"
            android:label="@string/service_name"
            android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
            <intent-filter>
                <action android:name="android.service.
                 notification.NotificationListenerService" />
            </intent-filter>

        </service>
    </application>

А вот MyService.class:

public class MyService extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        Notification mNotification = sbn.getNotification();
        if (mNotification != null) {
            Bundle extras = mNotification.extras;
            Intent intent = new Intent(MainActivity.INTENT_ACTION_NOTIFICATION);
            intent.putExtras(extras);
            sendBroadcast(intent);

        }
    }

    @Override
    public void onNotificationRemoved(StatusBarNotification sbn) {

    }
}

1 Ответ

0 голосов
/ 04 марта 2019

Сначала получите разрешение во время выполнения, если вы используете API выше 22 * ​​1001 *

if (Build.VERSION.SDK_INT > 22) {
    requestPermissions(new String[]{Manifest.permission
                                            .BIND_NOTIFICATION_LISTENER_SERVICE}, 1001);
}

Вы получите ответ в onRequestPermissionsResult для указанного выше разрешения

Затем в своей деятельности спросите, является ли пользователь вашимПриложение может получить доступ к уведомлению, получив компонент слушателя уведомлений

Set<String> listnerSet = NotificationManagerCompat.getEnabledListenerPackages(this);
boolean haveAccess = false;
for (String sd : listnerSet) {
   if (sd.equals("your -- package -- name")) {
        haveAccess = true;
   }
}
if (!haveAccess) {
   startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
}
...