合并android清单文件,冲突过滤器

use*_*224 6 merge android manifest

我正在尝试在Unity中组合来自2个插件的安卓清单文件,但有两个活动使用相同的intent-filter,我只能同时获得1个或另一个....

在两个冲突的活动中,清单文件中最顶层的活动是可行的活动.因此,如果清单#1中的活动位于顶部,插件#1将起作用,但不起作用#2,反之亦然.

这两个相互冲突的活动是:

<activity
        android:name="com.devfo.andutils.DevfoUnityPlayerActivity"
        android:label="@string/app_name"
        android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
        android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity> 
Run Code Online (Sandbox Code Playgroud)

和:

<activity android:name="com.qualcomm.QCARUnityPlayer.QCARPlayerProxyActivity" 
android:label="@string/app_name" android:screenOrientation="portrait" 
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以合并这两个并让他们从同一个应用程序工作?我正在使用Unity 3d.

ama*_*its 6

例如,在您只想将第一个活动用作启动器的清单中,您必须添加以下两个修改:

在清单的开头:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
Run Code Online (Sandbox Code Playgroud)

对于要删除intent过滤器的活动,请添加以下代码:

<activity android:name="com.qualcomm.QCARUnityPlayer.QCARPlayerProxyActivity" 
android:label="@string/app_name" android:screenOrientation="portrait" 
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
  <intent-filter tools:node="removeAll">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

重要的是在intent-filter标记中添加工具:node ="removeAll"属性


Emi*_*Adz 1

Activity这个intent-filter

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
Run Code Online (Sandbox Code Playgroud)

是在应用程序启动时启动的主要活动Activity,您不能使两个活动同时工作。

你应该做的就是只让一个活动(你的主要活动有这个过滤器),而让另一个活动没有它。

第二个Activity也将是应用程序的一部分,但它不会是Activity您看到的第一个。您可以使用该startActivity()方法启动它。