2016-09-11 14 views
17

Nếu bạn gắn thiết bị Android vào PC, bạn có thể duyệt các tập tin và thư mục. Có thể lấy thư mục này bằng cách sử dụng Environment.getExternalStorage(). Bạn có thể sử dụng nó từ ứng dụng của bạn và tạo các tập tin và thư mục có thể truy cập. Nó hoạt động tốt.Cách sao chép tập tin bằng cách sử dụng adb vào thư mục android có thể truy cập từ PC

Trên thiết bị của tôi, đường dẫn này trông giống như /storage/emulated/0 và nếu tôi thử adb push vào thư mục này, tôi sẽ nhận được lỗi truy cập bị từ chối. Có thể sao chép các tệp bằng cách sử dụng adb vào cùng thư mục với Windows Explorer không?

D:\...\tools>adb push ACCOUNTS.DB /storage/emulated/0 
failed to copy 'ACCOUNTS.DB' to '/storage/emulated/0': Permission denied 
58969 KB/s (606505 bytes in 0.010s) 

Tôi đang thực hiện tự động nhập khẩu/xuất khẩu và tôi muốn các tập tin để có thể truy cập mà không adb shell trong trường hợp bất cứ điều gì sẽ đi sai.

Hiện đang sử dụng biến $EXTERNAL_STORAGE là giải pháp thay thế, nó hoạt động cho cả adb và ứng dụng.

Thiết bị: Asus Fonepad 7, Android 5.0, đã thử Genymotion Custom Tablet 6.0 - hoạt động.

+0

'adb push .../storage/emulated/0' hoạt động tốt cho tôi, thử nghiệm trên Nexus 5X chạy Android 6.0.1. – CommonsWare

+0

nó là vấn đề, tôi cần nó để làm việc * đáng tin cậy *, nhưng nó không thành công trên thiết bị của riêng tôi, làm việc với giả lập. – kemsky

Trả lời

4

Hãy thử sử dụng /sdcard/. Mặc dù không được khuyến khích thực hiện điều này trong mã số . Nó có vẻ là cách duy nhất với adb:

$ adb push somefile /storage/emulated/0/somefile 
[100%] /storage/emulated/0/somefile 
adb: error: failed to copy 'somefile' to '/storage/emulated/0/somefile': Read-only file system 

$ adb push somefile /sdcard/somefile 
[100%] /sdcard/somefile 

Bằng cách này, trên thiết bị của tôi họ không có giá trị như nhau: Environment.getExternalStorage() điểm để /storage/emulated/0/ khi /sdcard điểm để /storage/emulated/legacy.

+0

Tệp đã được sao chép thành công (và tôi có thể nhìn thấy nó ở đúng nơi với ES Explorer), nhưng nó không thể nhìn thấy từ máy tính. Đã thử kết nối lại, chờ ... có lẽ tôi cần bằng cách nào đó kích hoạt lập chỉ mục. – kemsky

+1

Có vẻ như chương trình phát sóng 'MEDIA_SCANNER_SCAN_FILE' có thể khắc phục được. – kemsky

2

Thật dễ dàng, bộ nhớ trong không khả dụng trên các thiết bị không bắt nguồn từ. Vì vậy, như đã được đề cập trong bwt answer bạn chỉ cần để đẩy dữ liệu của bạn để sdcard:

adb push somefile /sdcard/somefile 

Với lấy các tập tin từ hệ thống tập tin của bạn, bạn cũng sẽ có vài vấn đề. Nhưng với trường hợp kéo một cơ sở dữ liệu từ một ứng dụng gỡ lỗi - bạn sẽ chỉ cần thay đổi quyền của tệp thông qua chmod. Tại đây bạn có liên kết hữu ích - XDA guys about adb

Các vấn đề liên quan