-
16-09-2014, 08:51 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- Hà Nội
- Bài viết
- 0
Không kết nối được với Google API trong Android
Chào mọi người. Mình có viết một đoạn code sau để lấy thông tin các địa điểm tọa độ nào đó. Đoạn code này khi chạy demo trên Java Project thì vẫn nhận được dữ liệu bình thường. Nhưng khi chuyển sang Android thì lại có lỗi chỗ connect ra ngoài internet.
Mình đã thử thay Key browser thành Key android khi chuyển sang Android nhưng vẫn không có tác dụng.
Bạn nào có kinh nghiệm giúp mình với. Tks! [IMG]images/smilies/biggrin.png[/IMG]
PS: Mới học java và cũng mới đụng tới bộ eclipse. (^_^)
Mã:public class API { private String API = "https://maps.googleapis.com/maps/api/place/search/json?"; private String KEY = "&key=AIzaSyBcvusHiiNW6tWWnKdJoM6h5QEe3O49TIU";//Key browser private String LOCATION = "&location="; private String KEYWORD = "?keyword="; private String RADIUS = "&radius=1500"; public ArrayList<Data> findNearPlace(Double x, Double y) { ArrayList<Data> results = null; StringBuilder link = new StringBuilder(API + LOCATION + x + "," + y + KEY + RADIUS); URL url; HttpURLConnection con; InputStreamReader reader; StringBuilder json = new StringBuilder(); try { url = new URL(link.toString()); con = (HttpURLConnection) url.openConnection(); reader = new InputStreamReader(con.getInputStream()); int Pos = 0; char buffer[] = new char[1024]; while ((Pos = reader.read(buffer)) != -1) { json.append(buffer, 0, Pos); } JSONObject obj = new JSONObject(json.toString()); JSONArray array = obj.getJSONArray("results"); results = new ArrayList<Data>(array.length()); for (int i = 0; i < array.length(); i++) { Data data = new Data(); data.name = array.getJSONObject(i).getString("name"); JSONObject location = array.getJSONObject(i) .getJSONObject("geometry").getJSONObject("location"); data.lat = location.getDouble("lat"); data.lng = location.getDouble("lng"); results.add(data); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return results; } }
View more random threads:
- Tạo một đối tượng trong Java căn bản
- ListView ko cập nhật được mẫu tin thứ 2
- Bị lỗi khi override lại phương thức getFilter (trong việc tích hợp search vào ListView)
- Cách xoay màn hình BlueStacks trên Mac OS?
- [JavaCV] Sử dụng thư viện JavaCV trong lập trình Android
- Cách thiết lập môi trường Biên dịch Android-x86 trên Ubuntu 32bit
- < Lỗi > sao cái surfaceview của em không chạy
- Upload file từ webview trong Android
- tại sao không xuất hiện màn hình xử lý trong j2me?
- Cách thế nào để httptransportSE hết timeout?
-
16-09-2014, 09:36 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Add permission Internet.
-
16-09-2014, 09:41 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình thêm hết rồi. Các thành phần được thêm vào trong file manifest của mình:
Mã:<permission android:name="tranminh.luan.onclicktofind.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="tranminh.luan.onclicktofind.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - <!-- Required to show current location --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> - <!-- Required OpenGL ES 2.0. for Maps V2 --> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDn51IuESBG06QsoS9aCbh9-3Cjp9RDX6M" />
-
16-09-2014, 10:38 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Xem device có bị chặn proxy gì gì không ?
Project tạo ra có phải là dạng Google API không?
Mã lỗi trả về ở đoạn nào? Lỗi là gì?
-
16-09-2014, 05:00 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Debug tới chỗ reader = new InputStreamReader(con.getInputStream());
thì nhận được một cái exception sau:
NetworkOnMainThreadException
Sau đó chương trình Unfortunate, has stoped.
- - - Nội dung đã được cập nhật ngày 16-09-2014 lúc 10:00 PM - - -
Search mãi thì cũng fix xong lỗi.
Có một trang blog nói là từ phiên bản android API 10 trở lên các hàm truy cập đến internet phải được chạy trong một thread riêng. Làm một cái AsyncTask là vấn đề được giải quyết.
Cám ơn bạn nhiều lắm ^^
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...