Getting Android intent extras that were passed to the Unity app
I found an answer that gave me the code below:
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");
bool hasExtra = intent.Call<bool>("hasExtra", "arguments");
if (hasExtra)
{
Debug.Log("Extras");
}
But it never seems to have extras when I am sure I am getting sent extras. Is there a certain point where the code above only works, or can I call it at any time (in an update or whatever) after the intent is called, and have it always contain the extras that were sent?
It could also be a problem with my manifest considering I don't know them that well. Do I have this set up correctly to receive extras? It comes from the second intent-filter. It starts (or continues) the app correctly, but I am not sure I set the manifest up correctly. (I changed some names below due to NDA).
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
android:installLocation="preferExternal"
android:versionCode="5"
android:versionName="1.05">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<application
android:theme="@style/UnityThemeSelector"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.thing.app3d" />
</intent-filter>
<meta-data android:name="com.name.meta.type" android:value="type"/>
<meta-data android:name="com.name.meta.category" android:value="print"/>
<meta-data android:name="com.name.meta.label" android:value="Some label"/>
<meta-data android:name="com.name.meta.description" android:value="Some description"/>
<meta-data android:name="com.name.meta.image" android:resource="@drawable/app_banner"/>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
Thank you for any help!
Answer by jcmontanez · Jun 01, 2018 at 05:23 PM
Hi @DoctorWhy,
We had got a similar problem. I wrote here the answer a few minutes ago.Link
I don't know why, but instead of using the hasExtra method, we select the specific variable that we need:
String text = intent.Call<String> ("getStringExtra", "varName");
Hope it helps.