> 文档中心 > 【鸿蒙】调用华为打印服务

【鸿蒙】调用华为打印服务

不知道有没有发现,鸿蒙系统打开文档,选择打印会有一个【华为打印】的选项,其实这个功能就类似于拉起第三方应用,只需要知道包名和启动页面调用startAbility就行了

     Intent intentService = new Intent();     Set entities = new HashSet();     entities.add("android.intent.category.LAUNCHER");     final String appPkg = "com.huawei.printservice";     final String AbilityName = "com.huawei.print.ui.MainPrintPreviewActivity";     // 通过Intent中的OperationBuilder类构造operation对象,指定设备标识(空串表示当前设备)、应用包名、Ability名称     Operation operation = new Intent.OperationBuilder()      .withDeviceId("")      .withBundleName(appPkg)      .withAbilityName(AbilityName)      .withAction("android.intent.action.MAIN")      .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)      .withEntities(entities)      .build();     // 把operation设置到intent中     intentService.setOperation(operation);     startAbility(intentService);

但是目前有个问题,不知道怎么传递文档过去,希望后续官方文档有说明

顺便记录一下常用的应用的包名及对应的启动页

     //微信 包名 com.tencent.mm  启动类名:com.tencent.mm.ui.LauncherUI     //QQ 包名 com.tencent.mobileqq  启动类名:com.tencent.mobileqq.activity.HomeActivity     //支付宝 包名:com.eg.android.AlipayGphone 启动类名com.eg.android.AlipayGphone.FastStartActivity     //设置 包名:com.android.settings     launchApp(this.getAbility(), "com.eg.android.AlipayGphone", "com.eg.android.AlipayGphone.FastStartActivity");
/**     * 打开第三方APP 如果已经安装直接打开,没有安装打开应用市场     * tencent     *     * @param appPkg      包名     * @param abilityName 打开的哪个activity     */    private void launchApp(Ability ability, String appPkg, String abilityName) { try {     if (isAPPInstall(ability, appPkg)) {  Intent intent = new Intent();  Set entities = new HashSet();  entities.add("android.intent.category.LAUNCHER");  Operation operation = new Intent.OperationBuilder()   .withDeviceId("")   .withBundleName(appPkg)   .withAbilityName(abilityName)   .withAction("android.intent.action.MAIN")   .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)   .withEntities(entities)   .build();  intent.setOperation(operation);  ability.startAbility(intent);     } else {  Intent intent = new Intent();  //跳转到应用商场  Operation operation = new Intent.OperationBuilder()   .withUri(Uri.parse("market://details?id=" + appPkg))   .withAction("android.intent.action.VIEW")   .withBundleName("com.huawei.appmarket")   .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)   .build();  //跳转到网站上下载  /*Operation operation = new Intent.OperationBuilder()   .withUri(Uri.parse(url))   .build();*/  intent.setOperation(operation);  ability.startAbility(intent);     } } catch (Exception e) {     e.printStackTrace(); }    }
    /**     * 判断app是否安装     *     * @param appPkg 包名     */    private boolean isAPPInstall(Ability ability, String appPkg) { try {     ability.getBundleManager().isApplicationEnabled(appPkg);     return true; } catch (java.lang.IllegalArgumentException ex) {     return false; }    }

补充一个android 中的调用打印服务吧 同样也是不知道怎么传值

    Intent intent = new Intent();    ComponentName comp = new ComponentName("com.huawei.printservice", "com.huawei.print.ui.MainPrintPreviewActivity");    intent.setComponent(comp);    intent.setAction("android.intent.action.MAIN");    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    startActivity(intent);

暑期编程PK赛 【鸿蒙】调用华为打印服务 得CSDN机械键盘等精美礼品!