Tôi muốn sử dụng adb shell
để yêu cầu thiết bị hiển thị hình ảnh trên thẻ SD của nó. Tôi nghĩ lệnh này sẽ làm việc:Cách sử dụng vỏ adb để hiển thị hình ảnh cục bộ
adb shell am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity -d file:///storage/sdcard0/Android/data/<mypackage>/files/myfile.jpg
Đáng tiếc là tôi nhận được lỗi này:
Starting: Intent { act=android.intent.action.MAIN cmp=com.android.browser/.BrowserActivity }
Error type 3
Error: Activity class {com.android.browser/com.android.browser.BrowserActivity} does not exist.
Tôi cũng đã thử làm một hành động VIEW
, và cố gắng với chỉ -n
hoặc các thông số -d
.
adb shell am start -a android.intent.action.VIEW -d file:///storage/sdcard0/Android/data/<mypackage>/files/myfile.jpg
Chỉ sử dụng -d
kết quả tham số trong lỗi này (Tôi đã thử cả hai có và không có "file: //" tiền tố trên con đường):
Starting: Intent { act=android.intent.action.VIEW dat=/storage/sdcard0/Android/data//files/myfile.jpg }
Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=/storage/sdcard0/Android/data//files/myfile.jpg flg=0x10000000 }
Các điều khoản trên các tập tin bao gồm:
-rw-rw-r-- root sdcard_rw 198106 2013-01-02 21:29 gUD9w5.jpg
Tôi đang thử nghiệm với Galaxy Nexus bắt nguồn từ chạy 4.1.1.
Cập nhật: Tôi đã thử đề xuất của dtmilano nhưng công cụ Crop cung cấp cửa sổ bật lên "Không thể tải hình ảnh". Dấu vết ngăn xếp từ logcat là:
ActivityManager: START {dat=file:///storage/sdcard0/Android/data/<mypackage>/Pictures/myfile.jpg typ=image/*
flg=0x13000000 cmp=com.google.android.gallery3d/com.android.gallery3d.app.CropImage u=0} from pid 301
UriImage: fail to open: file:///storage/sdcard0/Android/data/<mypackage>/Pictures/myfile.jpg
UriImage: java.io.FileNotFoundException: /storage/sdcard0/Android/data/<mypackage>/Pictures/myfile.jpg:
open failed: ENOENT (No such file or directory)
UriImage: at libcore.io.IoBridge.open(IoBridge.java:416)
UriImage: at java.io.FileInputStream.<init>(FileInputStream.java:78)
UriImage: at java.io.FileInputStream.<init>(FileInputStream.java:105)
UriImage: at android.content.ContentResolver.openInputStream(ContentResolver.java:445)
UriImage: at com.android.gallery3d.data.UriImage.openOrDownloadInner(UriImage.java:98)
UriImage: at com.android.gallery3d.data.UriImage.openFileOrDownloadTempFile(UriImage.java:78)
UriImage: at com.android.gallery3d.data.UriImage.prepareInputFile(UriImage.java:164)
UriImage: at com.android.gallery3d.data.UriImage.access$100(UriImage.java:40)
UriImage: at com.android.gallery3d.data.UriImage$RegionDecoderJob.run(UriImage.java:170)
UriImage: at com.android.gallery3d.data.UriImage$RegionDecoderJob.run(UriImage.java:168)
UriImage: at com.android.gallery3d.app.CropImage$LoadDataTask.run(CropImage.java:921)
UriImage: at com.android.gallery3d.app.CropImage$LoadDataTask.run(CropImage.java:913)
UriImage: at com.android.gallery3d.util.ThreadPool$Worker.run(ThreadPool.java:124)
UriImage: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
UriImage: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
UriImage: at java.lang.Thread.run(Thread.java:856)
UriImage: at com.android.gallery3d.util.PriorityThreadFactory$1.run(PriorityThreadFactory.java:43)
UriImage: Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
UriImage: at libcore.io.Posix.open(Native Method)
UriImage: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
UriImage: at libcore.io.IoBridge.open(IoBridge.java:400)
UriImage: ... 16 more
Tôi tự hỏi đây có phải là thẻ SD bên trong không?
Nó sẽ hoạt động với 'VIEW' và rời khỏi' -n com.android.browser/.BrowserActivity'. Hệ thống sau đó sẽ giải quyết ý định đến đúng lớp. – iagreen
Điều đó dường như không hiệu quả đối với tôi, tôi đã cập nhật câu hỏi với lỗi mà tôi thấy. –
Cài đặt ứng dụng trình quản lý tệp và cố gắng duyệt qua và xem ứng dụng đó - hãy trả lời câu hỏi quyền. Có thể tệp có thể truy cập được, nhưng không phải bằng tên đường dẫn * đó cho ứng dụng của userid *. –