如何使用ADB shell来显示本地图像(How to use adb shell to displ

2019-07-17 19:19发布

我想利用adb shell告诉我的设备与SD卡上显示图像。 我想这个命令会工作:

adb shell am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity -d file:///storage/sdcard0/Android/data/<mypackage>/files/myfile.jpg

不幸的是我得到这个错误:

起始:意向{ACT = android.intent.action.MAIN CMP = com.android.browser / .BrowserActivity}
错误类型3
错误:Activity类{com.android.browser / com.android.browser.BrowserActivity}不存在。

我也试图做一个VIEW动作,且仅在试图-n-d参数。

adb shell am start -a android.intent.action.VIEW -d file:///storage/sdcard0/Android/data/<mypackage>/files/myfile.jpg

仅使用-d此错误的参数结果(我试过有和没有的“文件://”的路径前缀):

开始:意向{ACT = android.intent.action.VIEW DAT = /存储/ sdcard0 / Android设备/数据文件// / myfile.jpg}
错误:活动还没开始,无法解决意向{行动= android.intent.action.VIEW DAT = /存储/ sdcard0 /安卓/数据//文件/ myfile.jpg FLG = 0x10000000的}

该文件的权限是:

-rw-rw-r-- root     sdcard_rw   198106 2013-01-02 21:29 gUD9w5.jpg

我有一个根深蒂固的Galaxy Nexus运行4.1.1测试。

更新 :我试过dtmilano的建议,但裁切工具提供了一个“无法装载图像”弹出。 从logcat的堆栈跟踪为:

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

我想知道,如果这是一个内部的SD卡,也许图像被视为应用程序数据,以便其他应用不能访问它?

Answer 1:

这应该工作,但是它依赖于你所安装的应用程序:

$ adb shell am start -t image/* -d file:///mnt/sdcard/myfile.jpg

有趣的是,如果你使用...完成操作:选择多媒体这是行不通的,但如果你选择裁剪图片作品。 另外随着天文图像浏览器的工作原理。



Answer 2:

最快的解决方法我有我的要求是只拉文件关闭设备和测试它在我的本地机器上:

adb pull /storage/sdcard0/Android/data/<mypackage>/files/myfile.jpg ~/Downloads


文章来源: How to use adb shell to display a local image
标签: android adb