ActivityRouter
Проект
Демонстрация проекта
Инструкция по установке
allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
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 и создайте новый проект с соответствующей версией. Скопируйте файлы из нового проекта в корневой каталог.
Использование
@Router("main")
public class MainAbility extends Ability {
...
}
Теперь можно открыть MainAbility через mzule://main.
@Router({"main", "root"})
Теперь mzule://main и mzule://root могут обращаться к одной и той же Ability.
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().
@Router({"http://mzule.com/main", "main"})
@Router("logout")
public static void logout(Context context, IntentParams bundle) {
...
}
Можно определить метод url на любом параметре, который является Context и IntentParams. Используйте @Router для определения метода. ## Авторские права и лицензии
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )