1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chinasoft_ohos-ActivityRouter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ActivityRouter

Проект

  • Проект: ActivityRouter.
  • Серия: openharmony, адаптация сторонних компонентов.
  • Функция: поддержка определения URL для Ability, что позволяет переходить к Ability через URL, поддерживается переход в браузере и приложении.
  • Состояние переноса проекта: основная функциональность реализована.
  • Вызовы: отсутствуют.
  • Версия разработки: SDK6, DevEco Studio 2.2 Beta1.
  • Базовая версия: Releases v1.1.5.

Демонстрация проекта

Иллюстрация

Инструкция по установке

  1. В файле build.gradle в корневом каталоге проекта:
allprojects {
    repositories {
        maven {
            url 'https://s01.oss.sonatype.org/content/repositories/releases/'
        }
    }
}
  1. В файле build.gradle модуля entry:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    
    implementation('com.gitee.chinasoft_ohos:ActivityRouter-annotation:1.0.0')
    implementation('com.gitee.chinasoft_ohos:ActivityRouter-app_module:1.0.0')
    implementation('com.gitee.chinasoft_ohos:ActivityRouter-compiler:1.0.0')
    annotationProcessor('com.gitee.chinasoft_ohos:ActivityRouter-compiler:1.0.0')
    implementation('com.gitee.chinasoft_ohos:ActivityRouter-activityrouter:1.0.0')
    ……
}

В версиях SDK6 и DevEco Studio 2.2 Beta1 проект можно запустить напрямую. Если запуск не удаётся, удалите файлы проекта .gradle, .idea, build, gradle, build.gradle и создайте новый проект с соответствующей версией. Скопируйте файлы из нового проекта в корневой каталог.

Использование

  1. Добавьте аннотацию к настраиваемому Ability:
@Router("main")
public class MainAbility extends Ability {
    ...
}

Теперь можно открыть MainAbility через mzule://main.

  1. Настройка нескольких адресов:
@Router({"main", "root"})

Теперь mzule://main и mzule://root могут обращаться к одной и той же Ability.

  1. Добавление Callback:
public class MyApplication extends AbilityPackage implements RouterCallbackProvider {

    @Override
    public void onInitialize() {
        super.onInitialize();

    }

    @Override
    public RouterCallback provideRouterCallback() {
        return new SimpleRouterCallback(){

            @Override
            public boolean beforeOpen(Context context, Uri uri) {
                if (uri.toString().startsWith("mzule://")){
                    Intent intent = new Intent();
                    Operation operationBuilder = new Intent.OperationBuilder()
                            .withBundleName(context.getBundleName())
                            .withAbilityName(LaunchAbility.class.getName())
                            .build();
                    intent.setOperation(operationBuilder);
                    context.startAbility(intent,11);
                    return true;
                }
                return false;
            }

            @Override
            public void notFound(Context context, Uri uri) {
                Intent intent = new Intent();
                Operation operation =new Intent.OperationBuilder()
                        .withBundleName(context.getBundleName())
                        .withFlags(Intent.FLAG_ABILITY_NEW_MISSION)
                        .withAbilityName(NotFoundAbility.class.getName())
                                .build();
                intent.setOperation(operation);
                context.startAbility(intent,2);
            }

            @Override
            public void error(Context context, Uri uri, Throwable e) {
                Intent intent1 = new Intent();
                Operation operation =new Intent.OperationBuilder()
                        .withBundleName(context.getBundleName())
                        .withFlags(Intent.FLAG_ABILITY_NEW_MISSION)
                        .withAbilityName(ErrorStackAbility.class.getName())
                        .build();
                intent1.setParam("uri",uri);
                intent1.setParam("error",e);
                intent1.setOperation(operation);
                context.startAbility(intent1,3);
            }
        };
    }
}

Реализуйте интерфейс RouterCallbackProvider в AbilityPackage и предоставьте RouterCallback через метод provideRouterCallback().

  1. Поддержка Http(s) протокола:
@Router({"http://mzule.com/main", "main"})
  1. Поддержка вызова метода через url:
@Router("logout")
public static void logout(Context context, IntentParams bundle) {
    ...
}

Можно определить метод url на любом параметре, который является Context и IntentParams. Используйте @Router для определения метода. ## Авторские права и лицензии

  • Apache License 2.0

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft_ohos-ActivityRouter.git
git@api.gitlife.ru:oschina-mirror/chinasoft_ohos-ActivityRouter.git
oschina-mirror
chinasoft_ohos-ActivityRouter
chinasoft_ohos-ActivityRouter
master