我们正在准备发布即时应用程序,但是,在Google Play的AIA开发轨道中运行AIA应用程序时遇到问题。
我们的AIA应用可以从Android Studio完美运行,但是尝试在Play商店中的真实设备上运行时会出现此问题。
任何帮助表示赞赏。

有问题的错误:

java.lang.SecurityException: Not allowed to start activity Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://www.example.com/... pkg=com.example (has extras) }


我们的AIA设置为运行ACTION_VIEW Intent,以打开应用程序其他功能中列出的“活动”,这与Google提供的示例非常相似。
通过URL打开我们的应用程序后,会将其发送到基本功能中的路由器活动以处理解析URI,并打开适当的活动以处理URL路径。


基本功能-UrlRouterActivity
功能1-Feature1活动


基本功能清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rentpath.lib">

    <application>
        <activity
            android:name=".activity.UrlRouterActivity"
            android:noHistory="true"
            android:launchMode="singleInstance"
            android:theme="@style/Theme.AppCompat.NoDisplay">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:host="www.example.com" />
                <data android:pathPrefix="/path" />
            </intent-filter>
        </activity>
    </application>

</manifest>


功能1清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rentpath.lib.pdp">

    <application>
        <activity
            android:name=".activity.Feature1Activity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="@string/filter_scheme_secure" /> <!-- String resource for https -->
                <data android:host="www.example.com" />
                <data android:pathPrefix="/action_feature_1" />
            </intent-filter>
            <intent-filter>
                <action android:name="action_feature_1"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>


我们的路由器Activity使用URI,解构URL参数,并按以下方式构造Intent:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https:www.example.com/action_feature_1?some_param=some_value"));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setPackage(context.getPackageName());
startActivity(intent);


启动此活动会导致顶部提到的异常。
同样,这仅在从Google Play的开发轨道运行AIA应用程序时发生。
从Android Studio运行AIA应用时,不会发生这种情况。

附加信息:

Android Studio 3.0 Beta 2
Gradle plugin: 3.0.0-beta2
Gradle wrapper distribution: 4.1-rc-1

最佳答案

事实证明,从Google Play运行AIA应用程序时,字符串引用不能与清单很好地配合使用。在方案上显式设置字符串值可解决此问题。

更换

<data android:scheme="@string/filter_scheme_secure" />




<data android:scheme="https" />


解决了问题。

关于android - SecurityException:不允许启动 Activity Intent ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45865107/

10-09 06:51