Фильтр намерений для запуска моего действия при нажатии пользовательского URI

Спасибо Raimond. Я также устал для наблюдения очевидного. @Keeney: Да контекст является всегда пустым. Raimond указал почему. Спасибо так или иначе, я не видел, почему также:-)

Моим текущим рабочим решением (хотя не, что я хотел) является Атрибут, который я использую для украшения всех моих действий контроллера. Вот реализация:

public class MasterPageDataAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            IUserRepository _repUser = RepositoryFactory.getUserRepository();
            IPrincipal siteUser = filterContext.Controller.ControllerContext.HttpContext.User;
            User loggedInUser = null;

            if (siteUser == null || siteUser.Identity.Name == null)
            {
                //do nothing
            }
            else
            {
                loggedInUser = _repUser.findUserById(siteUser.Identity.Name);
            }
            filterContext.Controller.ViewData["LoggedInUser"] = loggedInUser ?? new User { Nickname = "Guest" };
        }
    }

я буду изучать, как выполнить тот код способом, который следует за принципом DRY, начиная с использования атрибутов для того определенно средства, повторяющие себя. Возможно, своего рода перехватчик ( интересная идея ) или рычаг мог бы помочь.

Аплодисменты для этого.

23
задан Community 23 May 2017 в 12:33
поделиться

3 ответа

Когда я работал над OAuth с Календарем Google, мне пришлось добавить этот фильтр в активность, которую я хотел получить обратный вызов:

<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:scheme="yourapp" android:host="goog"></data>
</intent-filter>

Когда браузер вызывал URL yourapp://goog, он вернусь к моей деятельности.

6
ответ дан 29 November 2019 в 02:50
поделиться

Это решение для меня. Спасибо @DanO

<intent-filter>
        <data android:scheme="yourcustomname"/>
        <data android:host="*"/>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
  </intent-filter>
1
ответ дан 29 November 2019 в 02:50
поделиться

Вы уже добавили категорию в свой фильтр намерений:

<category android:name="android.intent.category.BROWSABLE" />
0
ответ дан 29 November 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: