Skip to content

Commit 61d8454

Browse files
committed
有効化の処理を順番に実行する。
1 parent bb9d692 commit 61d8454

2 files changed

Lines changed: 28 additions & 7 deletions

File tree

dConnectManager/dConnectManager/dconnect-manager-app/src/main/java/org/deviceconnect/android/manager/protection/DeveloperToolGuard.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,4 @@ public void disable() {
9191
private int getAdbFlag() throws Settings.SettingNotFoundException {
9292
return Settings.Global.getInt(mContentResolver, Settings.Global.ADB_ENABLED);
9393
}
94-
95-
private void putAdbFlag(final int flag) {
96-
Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, flag);
97-
}
9894
}

dConnectManager/dConnectManager/dconnect-manager-app/src/main/java/org/deviceconnect/android/manager/protection/SimpleCopyGuard.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,25 @@ public class SimpleCopyGuard extends CopyGuardSetting {
3232

3333
private final List<CopyGuardSetting> mCopyGuardSettingList = new ArrayList<>();
3434

35+
private final List<CopyGuardSetting> mPendingList = new ArrayList<>();
36+
3537
private boolean mLastEnabled;
3638

3739
private final EventListener mEventListener = (setting, isEnabled) -> {
3840
if (DEBUG) {
3941
Log.d(TAG, "onSettingChange: setting=" + setting.getClass().getSimpleName() + ", isEnabled=" + isEnabled);
4042
}
43+
4144
boolean enabled = isEnabled();
4245
if (enabled != mLastEnabled) {
4346
notifyOnSettingChange(enabled);
4447
}
4548
mLastEnabled = enabled;
49+
50+
// 有効にする際は、許可画面が出る場合があるので、順番に1つずつ確実に処理していく
51+
if (isEnabled) {
52+
enableNextSetting(setting);
53+
}
4654
};
4755

4856
private final Handler mHandler;
@@ -57,8 +65,8 @@ public SimpleCopyGuard(final Context context, final int appIconId) {
5765
handlerThread.start();
5866
mHandler = new Handler(handlerThread.getLooper());
5967

60-
addSetting(new ScreenRecordingGuardOverlay(context, appIconId));
6168
addSetting(new DeveloperToolGuard(context));
69+
addSetting(new ScreenRecordingGuardOverlay(context, appIconId));
6270

6371
// コピー防止機能の通知チャンネル作成
6472
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -104,8 +112,25 @@ public boolean isEnabled() {
104112

105113
@Override
106114
public void enable() {
107-
for (CopyGuardSetting setting : mCopyGuardSettingList) {
108-
setting.enable();
115+
synchronized (mPendingList) {
116+
for (CopyGuardSetting setting : mCopyGuardSettingList) {
117+
if (!setting.isEnabled() && !mPendingList.contains(setting)) {
118+
mPendingList.add(setting);
119+
}
120+
}
121+
}
122+
enableNextSetting(null);
123+
}
124+
125+
private void enableNextSetting(final CopyGuardSetting done) {
126+
synchronized (mPendingList) {
127+
if (done != null) {
128+
mPendingList.remove(done);
129+
}
130+
if (mPendingList.size() > 0) {
131+
CopyGuardSetting next = mPendingList.get(0);
132+
next.enable();
133+
}
109134
}
110135
}
111136

0 commit comments

Comments
 (0)