Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    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;    } }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Add permission Internet.

  3. #3
    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" />

  4. #4
    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ì?

  5. #5
    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 ^^

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •