add: notification listener service

This commit is contained in:
hyb1996
2017-10-31 00:07:45 +08:00
parent bfd6a0c40a
commit cbd2600c33
11 changed files with 255 additions and 60 deletions

View File

@@ -212,6 +212,15 @@
</service>
<service
android:name="com.stardust.notification.NotificationListenerService"
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>
<receiver android:name=".external.widget.ScriptWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>

View File

@@ -1,8 +1,12 @@
package com.stardust.scriptdroid.ui.main.drawer;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
@@ -13,6 +17,7 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.stardust.notification.NotificationListenerService;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
@@ -55,6 +60,7 @@ import io.reactivex.schedulers.Schedulers;
/**
* Created by Stardust on 2017/1/30.
* TODO 侧拉菜单用RecyclerView
*/
@EFragment(R.layout.fragment_drawer)
public class DrawerFragment extends android.support.v4.app.Fragment {
@@ -67,6 +73,9 @@ public class DrawerFragment extends android.support.v4.app.Fragment {
@ViewById(R.id.accessibility_service)
DrawerMenuItem mAccessibilityServiceItem;
@ViewById(R.id.notification_service)
DrawerMenuItem mNotificationPermissionItem;
@ViewById(R.id.floating_window)
DrawerMenuItem mFloatingWindowItem;
@@ -201,6 +210,19 @@ public class DrawerFragment extends android.support.v4.app.Fragment {
}
}
@Click(R.id.notification_service)
void goToNotificationServiceSettings() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
return;
}
boolean enabled = NotificationListenerService.getInstance() != null;
boolean checked = mNotificationPermissionItem.getSwitchCompat().isChecked();
if ((checked && !enabled) || (!checked && enabled)) {
startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
}
}
private boolean isAccessibilityServiceEnabled() {
return AccessibilityServiceTool.isAccessibilityServiceEnabled(getActivity());
}
@@ -307,6 +329,10 @@ public class DrawerFragment extends android.support.v4.app.Fragment {
private void syncSwitchState() {
mAccessibilityServiceItem.getSwitchCompat().setChecked(
AccessibilityServiceTool.isAccessibilityServiceEnabled(getActivity()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
mNotificationPermissionItem.getSwitchCompat().setChecked(NotificationListenerService.getInstance() != null);
}
}
private void enableAccessibilityService() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -15,7 +15,7 @@
<com.stardust.scriptdroid.ui.main.drawer.DrawerMenuGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:title="@string/text_accessibility_service">
app:title="@string/text_service">
<com.stardust.scriptdroid.ui.main.drawer.DrawerMenuItem
android:id="@+id/accessibility_service"
@@ -35,6 +35,14 @@
app:title="@string/text_stable_mode"
app:with_switch="true"/>
<com.stardust.scriptdroid.ui.main.drawer.DrawerMenuItem
android:id="@+id/notification_service"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:icon="@drawable/ic_ali_notification"
app:title="@string/text_notification_permission"
app:with_switch="true"/>
</com.stardust.scriptdroid.ui.main.drawer.DrawerMenuGroup>

View File

@@ -282,6 +282,8 @@
<string name="text_reset_succeed">重置成功</string>
<string name="text_cannot_read_file" formatted="true">无法读取文件: %s</string>
<string name="text_connected">已连接</string>
<string name="text_service">服务</string>
<string name="text_notification_permission">通知权限</string>
<string-array name="ad_showing_mode_keys">