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

华为手机Internal Deep Linking失效,如何在android:exported="false"下解决?

解决方案

方案1:改用显式Intent调用(推荐)

直接指定目标Activity的类名发起调用,无需依赖intent-filter,且不受android:exported="false"限制,是最安全的方式。

替换原来的隐式Intent代码:

// 原隐式调用方式
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("myScheme://your/path"));
startActivity(intent);

改为显式调用:

// 显式调用指定Activity
Intent intent = new Intent(context, InternalDeepLinkActivity.class);
intent.setData(Uri.parse("myScheme://your/path"));
startActivity(intent);

方案2:添加自定义签名权限(适配隐式调用场景)

如果必须保留隐式Intent调用(比如WebView内跳转),可以通过自定义签名权限限制仅自身应用能访问该Activity:

  1. 在AndroidManifest.xml中定义自定义权限:
<permission
    android:name="com.your.app.package.permission.ACCESS_DEEP_LINK"
    android:protectionLevel="signature" />
  • protectionLevel="signature" 确保只有与你的应用签名一致的应用才能申请该权限,避免外部恶意调用。
  1. 给InternalDeepLinkActivity添加权限声明:
<activity
    android:name=".InternalDeepLinkActivity"
    android:exported="false"
    android:noHistory="true"
    android:screenOrientation="portrait"
    android:permission="com.your.app.package.permission.ACCESS_DEEP_LINK">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="myScheme" />
    </intent-filter>
</activity>
  1. 在应用的权限声明中添加该权限:
<uses-permission android:name="com.your.app.package.permission.ACCESS_DEEP_LINK" />

这样华为HMS系统会识别到该权限允许自身应用通过隐式Intent调用目标Activity,同时保证Activity不会被外部未授权应用访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:08:14