You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TWA(Android Browser Helper)应用Play商店版GPS定位异常问题咨询

问题解决思路与方案

核心结论

可以让基于Android Browser Helper的TWA无需WebView Activity即可使用GPS功能。你遇到的Play商店版本权限问题,核心是运行时权限未主动请求以及Play签名导致的资产链接验证失败,而非是否需要WebView的问题。

问题原因分析

调试版本正常但Play发布版异常,通常有两个关键原因:

  1. 调试时Android Studio自动授予了权限,但发布版未触发动态权限请求(Android 6.0+要求危险权限必须运行时申请);
  2. Play商店的App Signing会替换本地签名,导致网站的Digital Asset Links验证失败,Chrome因此限制了位置权限的获取。

具体解决步骤

1. 在LauncherActivity中添加动态位置权限请求

TWA依赖Chrome运行网页,但位置权限是应用级别的,必须由宿主的TWA应用先获取权限,Chrome才会将权限传递给网页。修改你的LauncherActivity.java:

import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.Manifest;
import android.content.pm.PackageManager;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class LauncherActivity extends com.google.androidbrowserhelper.trusted.LauncherActivity {
    private static final int LOCATION_PERMISSION_REQUEST_CODE = 1001;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // 原有屏幕方向设置代码
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
        } else {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
        }

        // 检查并请求位置权限
        checkLocationPermissions();
    }

    private void checkLocationPermissions() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{
                            Manifest.permission.ACCESS_FINE_LOCATION,
                            Manifest.permission.ACCESS_COARSE_LOCATION
                    },
                    LOCATION_PERMISSION_REQUEST_CODE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // 权限已授予,网页可正常获取位置
            } else {
                // 可提示用户前往设置开启权限
            }
        }
    }

    @Override
    protected Uri getLaunchingUrl() {
        return super.getLaunchingUrl();
    }
}

2. 修复Digital Asset Links配置

  • 登录Play控制台,进入你的应用,在设置>应用签名中获取Play发布的SHA-256证书指纹;
  • 更新网站根目录下的.well-known/assetlinks.json文件,将Play的SHA-256添加到sha256_cert_fingerprints数组中;
  • 确认配置生效:访问https://你的域名/.well-known/assetlinks.json查看内容是否正确。

3. 清理Manifest中的冗余配置

删除Manifest中重复的<uses-feature android:name="android.hardware.location.gps" />条目,避免不必要的兼容性问题。

验证方法

发布内部测试版本到Play商店,安装后:

  1. 首次启动会弹出位置权限请求弹窗;
  2. 授予权限后,网页应能正常获取实时位置。

如果仍有问题,可通过adb logcat | grep "location\|TWA"查看日志,定位具体的权限或验证错误。

内容的提问来源于stack exchange,提问作者Hayze Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:28:15