Я разрабатываю Java-плагин для моего проекта Unity3D. Я хочу, чтобы он обрабатывал глубокие ссылки. поэтому я настроил манифест, как показано ниже:
<activity android:name="org.relegames.rele.AppStartActivity" android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<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="rele" android:host="checkdata"/>
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
Так что теперь, когда глубокая ссылка открывается браузером, запускается AppStartActivity и вызывается метод действия onCreate
. (AppStartActivity - это мое пользовательское действие, которое расширяет UnityPlayerActivity и Unity использует его в качестве основного действия.)
Так в чем же проблема? в основном я хочу обрабатывать глубокие ссылки, когда приложение открыто и приостановлено в фоновом режиме. Например, пользователь открывает приложение, нажимает кнопку «Домой», открывает браузер и затем использует глубокую ссылку. Теперь приложение будет открыто, но я не могу справиться с этим. Я использовал приемники вещания, но не работал:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.VIEW");
filter.addCategory("android.intent.category.DEFAULT");
filter.addCategory("android.intent.category.BROWSABLE");
filter.addDataScheme("rele");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("RELE",intent.getAction());
UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(UnityPlayer.currentActivity,"Deep link runtime",Toast.LENGTH_LONG).show();
}
});
}
};
registerReceiver(receiver, filter);
Также есть вторая проблема, с которой я сталкиваюсь:
Я знаю, что есть имена методов onNewIntent
, документация по Android говоритчто этот метод является своего рода отправной точкой для действий с одной вершиной и не может использоваться действиями с одной задачей;однако я переопределил этот метод для своей задачи с одной задачей, и теперь он работает для глубоких ссылок. В чем идея?