安卓 - 服务视图

4

我正在使用一个覆盖层视图,它覆盖了屏幕的大部分区域。然而,我收到了用户报告,称他们在安装第三方APK时无法推送包管理器中的安装按钮。

有没有什么办法解决这个问题?我考虑使用BroadcastReceiver来捕获ACTION_VIEW意图,但似乎不可能,因为这是一个Activity操作。

我留下我的类和xml布局文件供参考:

public class OverlayView extends RelativeLayout{

    private ImageView mImageView;

    public OverlayView(ServiceOverlay overlayService) {
        super(overlayService);
        load();
        mImageView = (ImageView) findViewById(R.id.backgroundimg);
    }



    public void destroy() {
        final WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        wm.removeView(this);
    }

    private void load() {
        LayoutInflater.from(getContext()).inflate(R.layout.overlay, this);
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                0x50728,
                -3);
        params.gravity = Gravity.CENTER;
        ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).addView(this, params);
    }    
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" 
    android:paddingTop="0.0dip"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="0.0dip"
    android:adjustViewBounds="false"
    android:windowActionBarOverlay="true"
      xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageView android:id="@+id/backgroundimg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/bg2"
        android:dither="false"
        android:scaleType="fitXY"
        android:windowActionBarOverlay="true" />
</LinearLayout>

3
似乎没有合法的方法可以做到这一点。未经用户同意安装应用程序是一个重大的安全问题,因此当操作系统认为用户可能处于被诱骗点击按钮但并不知道其真实功能的情况下(例如通过在按钮上绘制其他东西),“安装”按钮被禁用。我看到许多类似情况的解决方法是在用户点击应用程序通知时禁用/启用覆盖层,你可以查看PowerLine / Link Bubble以了解此行为。 - Kai
1个回答

1

应用程序的安装始终由用户控制。这是设计初衷,也应该如此。

举个例子,如果用户无法控制设备上安装的应用程序会发生什么情况呢?各种垃圾应用将被安装,并且用户将失去对设备的控制。这可能会影响通话、短信和设备的整体效率。

因此,用户需要从设备设置中删除此功能,以便能够通过 APK 安装第三方未签名应用程序,因为这些应用程序未发布到 Google Play。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接