Skip to content

Commit f05c64a

Browse files
author
hanjiahu
committed
适配Android O的悬浮窗权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; } else { params.type = WindowManager.LayoutParams.TYPE_PHONE; }
1 parent ee84bb7 commit f05c64a

File tree

5 files changed

+41
-6
lines changed

5 files changed

+41
-6
lines changed

app/src/main/java/com/facebook/react/devsupport/DebugOverlayController.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import android.content.Context;
1313
import android.graphics.PixelFormat;
14+
import android.os.Build;
1415
import android.support.annotation.Nullable;
1516
import android.view.Gravity;
1617
import android.view.WindowManager;
@@ -43,7 +44,11 @@ public void setFpsDebugViewVisible() {
4344
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
4445
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
4546
params.gravity = Gravity.RIGHT | Gravity.TOP;
46-
params.type = WindowManager.LayoutParams.TYPE_PHONE;
47+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
48+
params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
49+
} else {
50+
params.type = WindowManager.LayoutParams.TYPE_PHONE;
51+
}
4752
params.format = PixelFormat.RGBA_8888;
4853
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
4954
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;

app/src/main/java/com/han/activitytracker/TrackerWindowManager.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Context;
44
import android.graphics.PixelFormat;
5+
import android.os.Build;
56
import android.view.Gravity;
67
import android.view.View;
78
import android.view.WindowManager;
@@ -25,7 +26,13 @@ public TrackerWindowManager(Context context) {
2526
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
2627
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
2728
params.gravity = Gravity.LEFT | Gravity.TOP;
28-
params.type = WindowManager.LayoutParams.TYPE_PHONE;
29+
30+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
31+
params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
32+
} else {
33+
params.type = WindowManager.LayoutParams.TYPE_PHONE;
34+
}
35+
2936
params.format = PixelFormat.RGBA_8888;
3037
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
3138

app/src/main/java/com/han/cpu/CPUService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.content.Context;
55
import android.content.Intent;
66
import android.graphics.PixelFormat;
7+
import android.os.Build;
78
import android.os.IBinder;
89
import android.support.annotation.Nullable;
910
import android.util.Log;
@@ -52,7 +53,11 @@ public class CPUService extends Service {
5253
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
5354
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
5455
params.gravity = Gravity.CENTER | Gravity.TOP;
55-
params.type = WindowManager.LayoutParams.TYPE_PHONE;
56+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
57+
params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
58+
} else {
59+
params.type = WindowManager.LayoutParams.TYPE_PHONE;
60+
}
5661
params.format = PixelFormat.RGBA_8888;
5762
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
5863

app/src/main/java/com/han/devtool/MainActivity.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.han.devtool;
22

33
import android.content.Intent;
4+
import android.net.Uri;
5+
import android.os.Build;
46
import android.os.Bundle;
7+
import android.provider.Settings;
58
import android.support.v7.app.AppCompatActivity;
69
import android.text.method.ScrollingMovementMethod;
710
import android.view.View;
@@ -63,15 +66,25 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
6366
}
6467

6568
case R.id.manage:
66-
SettingsCompat.manageDrawOverlays(this);
69+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
70+
if(!Settings.canDrawOverlays(getApplicationContext())) {
71+
//启动Activity让用户授权
72+
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
73+
intent.setData(Uri.parse("package:" + getPackageName()));
74+
startActivityForResult(intent,100);
75+
}
76+
} else {
77+
SettingsCompat.manageDrawOverlays(this);
78+
}
79+
6780
break;
6881
case R.id.toggle:
6982
boolean granted1 = SettingsCompat.canDrawOverlays(this);
7083
SettingsCompat.setDrawOverlays(this, !granted1);
7184
boolean granted2 = SettingsCompat.canDrawOverlays(this);
7285
Toast.makeText(this,RomUtil.getVersion() + "\n" +RomUtil.getName() + "\ngranted: " + granted2,Toast.LENGTH_LONG).show();
7386
break;
74-
87+
7588
}
7689
}
7790

app/src/main/java/com/han/log/LogService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.database.sqlite.SQLiteDatabase;
88
import android.graphics.PixelFormat;
99
import android.os.AsyncTask;
10+
import android.os.Build;
1011
import android.os.IBinder;
1112
import android.support.annotation.Nullable;
1213
import android.support.v4.widget.CursorAdapter;
@@ -94,7 +95,11 @@ public LogdEvent(LogLine logLine) {
9495
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
9596
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
9697
params.gravity = Gravity.CENTER | Gravity.TOP;
97-
params.type = WindowManager.LayoutParams.TYPE_PHONE;
98+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
99+
params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
100+
} else {
101+
params.type = WindowManager.LayoutParams.TYPE_PHONE;
102+
}
98103
params.format = PixelFormat.RGBA_8888;
99104
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
100105

0 commit comments

Comments
 (0)