这是我的代码审查,我不能解决这个错误。我生成的值是附加十六进制数,正常,null ....
Map Api Url 0x22cd051c NORMAL null
下面是异常的图像:
GetDirectionActivity.java
public class GetDirectionActivity extends Activity implements TextWatcher,
Response.Listener<JSONObject>, Response.ErrorListener {
String url;
private static final String TAG_RESULT = "predictions";
JSONObject json;
AutoCompleteTextView actvGDOrigin;
ArrayList<String> names;
ArrayAdapter<String> adapter;
String browserKey = "AIzaSyAJKpL6YNyhf_bhoZMk5exe2lJc8Sm7L6M";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_direction);
actvGDOrigin = (AutoCompleteTextView) findViewById(R.id.actvGDOrigin);
actvGDOrigin.setThreshold(3);
names = new ArrayList<String>();
actvGDOrigin.addTextChangedListener(this);
}
public void updateList(String place) {
String input = "";
try {
input = "input=" + URLEncoder.encode(place, "utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String output = "json";
String parameter = input + "&sensor=false&key="
+ browserKey;
url = "https://maps.googleapis.com/maps/api/place/autocomplete/"
+ output + "?" + parameter;
Log.d("url", url);
DataRequest dataRequest = new DataRequest(Method.GET, url, null, this, this);
Log.d("datarequest:",dataRequest.toString());
RouteViaApp.getInstance().addToReqQueue(dataRequest, "jreq");
}
public void onResponse(JSONObject response) {
try {
JSONArray ja = response.getJSONArray(TAG_RESULT);
for (int i = 0; i < ja.length(); i++) {
JSONObject c = ja.getJSONObject(i);
String description = c.getString("description");
Log.d("description", description);
names.add(description);
}
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, names) {
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text = (TextView) view
.findViewById(android.R.id.text1);
text.setTextColor(Color.BLACK);
return view;
}
};
actvGDOrigin.setAdapter(adapter);
adapter.notifyDataSetChanged();
} catch (Exception e) {
}
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if (s.toString().length() <= 3) {
names = new ArrayList<String>();
updateList(s.toString());
}
}
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
}
}
RouteViaApp.java
public class RouteViaApp extends Application {
private RequestQueue mRequestQueue;
private static RouteViaApp mInstance;
public static final String TAG = RouteViaApp.class
.getSimpleName();
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
public static synchronized RouteViaApp getInstance() {
return mInstance;
}
public RequestQueue getReqQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToReqQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
getReqQueue().add(req);
}
public <T> void addToReqQueue(Request<T> req) {
req.setTag(TAG);
getReqQueue().add(req);
}
public void cancelPendingReq(Object tag) {
if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}
CustomJSONObjectRequest.java
public class CustomJSONObjectRequest extends JsonObjectRequest {
public CustomJSONObjectRequest(int method, String url, JSONObject jsonRequest,
Response.Listener<JSONObject> listener,
Response.ErrorListener errorListener) {
super(method, url, jsonRequest, listener, errorListener);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
@Override
public RetryPolicy getRetryPolicy() {
// here you can write a custom retry policy
return super.getRetryPolicy();
}
}
它说"提供的API密钥已过期",检查您的谷歌服务API密钥从这里:https://console.developers.google.com/project/robotic-center-92615/apiui/apis/library
更好的是,使用以下文档生成一个新密钥:https://developers.google.com/maps/documentation/android-api/signup?hl=en
提示"提供的API密钥已过期"。重新生成您的google浏览器密钥,并确保您已在google developer console中启用了google place api。