如何在其他应用中覆盖视图
Posted
技术标签:
【中文标题】如何在其他应用中覆盖视图【英文标题】:How to overlay views in other apps 【发布时间】:2013-12-09 02:15:31 【问题描述】:我从哪里开始?
我不知道我将使用什么功能或权限来实现这一点。 无需root。
视图是这样的,右侧的相机按钮,它是浮动的,对其他应用可见,如果你按下它,它会截图。
注意:我不会做截图应用,这只是我想要实现的一个例子。
【问题讨论】:
我在这里有一个相同的教程:myandroidtuts.blogspot.in/2013/05/… @NaviRamyle - 你能告诉我截图来自哪个应用吗? What APIs are used to draw over other apps (like Facebook's Chat Heads)?的可能重复 @AdnanMulla 死链接(是的,我知道它已经超过 6 年了) 【参考方案1】:这叫
在其他应用上绘图
检查这些答案
"DRAW OVER OTHER APP" is which permission in android
How to draw a view on top of everything?
(来自Morrison Chang) What APIs in Android is Facebook using to create Chat Heads?
【讨论】:
还有一个:***.com/questions/15975988/… 这不是答案...它是指向其他答案的链接的集合。应该作为评论发布。【参考方案2】:试试这个:
if(!isSystemAlertPermissionGranted(MainActivity.this))
requestSystemAlertPermission(MainActivity.this,1);
startService(new Intent(getApplicationContext(), Overlay.class));
还有:
public static void requestSystemAlertPermission(Activity context, int requestCode)
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
return;
final String packageName = context == null ? context.getPackageName() : context.getPackageName();
final Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + packageName));
if (context != null)
context.startActivityForResult(intent, requestCode);
else
context.startActivityForResult(intent, requestCode);
@TargetApi(23)
public static boolean isSystemAlertPermissionGranted(Context context)
final boolean result = Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || Settings.canDrawOverlays(context);
return result;
【讨论】:
以上是关于如何在其他应用中覆盖视图的主要内容,如果未能解决你的问题,请参考以下文章