- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
Tuy nhiên, các quyền tương ứng trong Hongmeng bị hạn chế và các ứng dụng thông thường không được phép sử dụng các ứng dụng. sử dụng điều khiển lưu an toàn để tạm thời xin quyền. Được sử dụng để lưu ảnh vào album ảnh.
Quyền của ứng dụng được chia thành ba loại. đều có thể đăng ký sử dụng; loại còn lại là các quyền được mở theo chế độ hạn chế và chỉ một số ít ứng dụng đáp ứng các trường hợp đặc biệt mới có thể sử dụng các quyền được hạn chế sau khi được phê duyệt cuối cùng là Lớp này; chỉ mở cho MDM thiết bị quản lý ứng dụng (Quản lý thiết bị di động).
Quyền liên quan đến việc lưu ảnh vào máy ảnh là ohos.permission.WRITE_IMAGEVIDEO. hợp nhất và các chức năng đặc biệt. Kiểm soát quyền bảo mật để tạm thời áp dụng quyền.
Trước đó, chúng tôi sử dụng kiểm soát bảo mật để cho phép người dùng nhấp vào để tạm thời nhận được quyền.
nhập { photoAccessHelper } từ '@kit.MediaLibraryKit' @Entry @ComponentV2 struct Index { build() { Column() { SaveButton({ icon: SaveIconStyle.LINES, text: SaveDescription.SAVE_TO_GALLERY, ButtonType: ButtonType.Capsule }) .onClick (() => { this.savePhotoToGallery().then(() => { this.getUIContext().getPromptAction().showToast({ message: 'Save thành công' }) }).catch((err: Error) => { this. getUIContext().getPromptAction().showToast({ message: err.message }) }) }) } } lưu không đồng bộ công khaiPhotoToGallery(): Promise { const ctx = getContext() const helper = photoAccessHelper.getPhotoAccessHelper(ctx) const src = ctx.resourceDir + '/icon.png' const request = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(ctx, src) return helper.applyChanges(request) } }
Trong ví dụ trên, hãy đảm bảo rằng icon.png thực sự tồn tại cục bộ. Khi chúng tôi sử dụng trình trợ giúp để gọi applyChanges, vì nó được gọi sau khi nhấp vào kiểm soát bảo mật, các quyền sẽ tạm thời được cấp và có thể được thực thi bình thường. Nếu nó không nằm trong kiểm soát bảo mật, bạn cần đảm bảo rằng các quyền tương ứng đã được cấp. thu được.
Đối với ảnh phía máy chủ, chúng tôi thường sử dụng dịch vụ tải xuống để tải ảnh xuống cục bộ. Nếu không cần sao lưu cục bộ, chỉ cần lưu trực tiếp bộ đệm ảnh đã tải xuống vào album. Chúng ta chuyển đổi hình ảnh cục bộ thành bộ đệm để mô phỏng hình ảnh được máy chủ tải xuống, sau đó sử dụng photoAccessHelper để tạo tài nguyên hình ảnh album và ghi bộ đệm hình ảnh của chúng ta vào tài nguyên hình ảnh này, sau đó chúng ta có thể lưu hình ảnh vào album. như sau.
nhập { photoAccessHelper } từ '@kit.MediaLibraryKit' nhập fs từ '@ohos.file.fs' @Entry @ComponentV2 struct Index { build() { Column() { SaveButton({ icon: SaveIconStyle.LINES, text: SaveDescription. SAVE_TO_GALLERY, ButtonType: ButtonType.Capsule }) .onClick(() => { this.savePhotoToGallery().then(() => { this.getUIContext().getPromptAction().showToast({ message: 'Save thành công' }) }).catch((err: Error) => { this.getUIContext ().getPromptAction().showToast({ message: err.message }) }) }) } } không đồng bộ công khai savePhotoToGallery(): Promise { const ctx = getContext() const helper = photoAccessHelper.getPhotoAccessHelper(ctx) return Promise.all([helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png').then((uri) => { return fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) }), ctx.resourceManager.getMediaContent($r('app.media.app_icon').id, 0)]).then((array) => { fs.writeSync(array[0] .fd, array[1].buffer) fs.closeSync(array[0].fd) }) } }
Các phương pháp trước đây đều phụ thuộc nhiều vào kiểm soát bảo mật, nhưng trong một số trường hợp, chúng ta không thể sử dụng kiểm soát bảo mật, chẳng hạn như trong trang H5, trang Flutter, v.v. Lúc này, chúng ta có thể sử dụng cửa sổ bật lên xác nhận lưu để lưu hình ảnh . Khi chúng tôi gọi showAssetsCreationDialog thông qua photoAccessHelper, hệ thống sẽ bật lên một cửa sổ bật lên xác nhận. Nếu người dùng nhấp vào Cho phép, chúng tôi có thể lưu ảnh vào album. Nếu người dùng nhấp vào Tắt, ảnh không thể được lưu vào album. Sử dụng phương pháp này, chúng ta không phải phụ thuộc nhiều vào các biện pháp kiểm soát bảo mật. Ví dụ như sau.
nhập { photoAccessHelper } từ '@kit.MediaLibraryKit' nhập fs từ '@ohos.file.fs' @Entry @ComponentV2 struct Index { @Local isShowHome: boolean = false build() { Column() { Button('Save the picture vào Album').onClick(()=>{ this.savePhotoToGallery().then(() => { this.getUIContext().getPromptAction().showToast({ tin nhắn: 'Lưu thành công' }) }).catch((err: Error) => { this.getUIContext().getPromptAction().showToast({ tin nhắn: err .message }) }) }) } } không đồng bộ công khai savePhotoToGallery(): Promise { const ctx = getContext() const helper = photoAccessHelper.getPhotoAccessHelper(ctx) const src = ctx.resourceDir + '/icon.png' const desFileUris = đang chờ helper.showAssetsCreationDialog([src], [{ title: 'test', fileNameExtension: ' png', photoType: photoAccessHelper.PhotoType.IMAGE }]) const desFile = fs.openSync(desFileUris[0], fs.OpenMode.WRITE_ONLY) const srcFile = fs.openSync(src, fs.OpenMode.READ_ONLY) fs.copyFileSync(srcFile.fd, desFile.fd) fs. closeSync(srcFile) fs.closeSync(desFile) } }
Vui lòng lưu icon.png trong ví dụ trên để nó tồn tại cục bộ.
Cuối cùng, bài viết về việc Hongmeng lưu ảnh vào album kết thúc tại đây. Nếu bạn muốn biết thêm về việc Hongmeng lưu ảnh vào album, vui lòng tìm kiếm bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai. ! .
Giới thiệu về trí thông minh gốc nhận dạng văn bản của các khả năng AI gốc của HarmonyOS Trong quá trình phát triển trước đây, chúng tôi đã phát triển nhiều kịch bản bằng cách gọi các khả năng thông minh của đám mây. Ví dụ: nhận dạng văn bản, nhận dạng khuôn mặt, v.v. Bản địa đề cập đến việc tích hợp một số khả năng trực tiếp vào
Lời nói đầu: Xin chào mọi người, đã lâu rồi tôi chưa cập nhật bài viết cho các bạn. Gần đây tôi vẫn đang tìm hiểu về hỗ trợ phát triển Hongmeng và tôi muốn chuyển một số kiến thức được sử dụng trong Android sang Hongmeng. ngôn ngữ, tôi đã viết cái này Vì vậy, bây giờ hướng dẫn này
Tôi là một lập trình viên xuất sắc, rất xuất sắc!