2013-01-17 32 views
9

Ứng dụng của tôi sử dụng ACRA để báo cáo lỗi và tôi có một vài báo cáo từ thiết bị của mình với lỗi: Chỉ có thể sử dụng 16 bit thấp hơn cho mã requestCode .. Google hiển thị lỗi xảy ra khi sử dụng startActivityForResult, nhưng tôi đã tìm kiếm mã của tôi một vài lần và tôi "không gọi điện thoại cho tôi ở bất cứ đâu.Ngoại lệ ACRA Chỉ có thể sử dụng 16 bit thấp hơn cho mã yêu cầu

Tôi khá bối rối và tự hỏi làm thế nào điều này ảnh hưởng đến người dùng (đủ thú vị, Báo cáo sự cố beta) không hiển thị bất kỳ lỗi nào cả).

bất cứ ai khác chạy vào điều này?

java.lang.RuntimeException: Unable to resume activity {com.myapp/com.myapp.MyActivity}: 
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:957) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3683) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode 
at android.support.v4.app.g.startActivityForResult(SourceFile:690) 

Ai đó có thể giúp tôi về điều này?

+1

có thể trùng lặp của [Ngoại lệ với Android khi sử dụng ACRA] (http://stackoverflow.com/questions/14378002/exception-with-android-when-using-acra) –

Trả lời

14

Mã yêu cầu chỉ có thể tối đa là 0xffff (65535). Vì vậy, bạn có lẽ gọi startActivityForResult(intent, REQUEST_CODE);REQUEST_CODE lớn hơn 65535.

Giải pháp:

  • làm yêu cầu mã nhỏ
  • override startActivityForResult để xử lý mã yêu cầu lớn hơn của bạn (mà chủ yếu là sẽ đi xuống một hack mà truncates hoặc một số thao tác khác để đẩy mã yêu cầu của bạn trong giới hạn) Trong các linked answer (từ trên) có mã trong startActivityForResult đó là vấn đề bạn đang chạy vào bởi Raghav Sood.
+1

và cách dễ nhất để "thực hiện yêu cầu mã nhỏ hơn "sẽ chỉ đơn giản là thêm' & 0xFFFF' vào mã "quá dài" của bạn –

+2

(VÀ BẢO ĐẢM MÃ NÀY LÀ GIÁ TRỊ TÍCH CỰC) –

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