在安装APK时INSTALL_FAILED_OLDER_SDK [英] INSTALL_FAILED_OLDER_SDK when installing apk

查看:135
本文介绍了在安装APK时INSTALL_FAILED_OLDER_SDK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要在我的手机的Andr​​oid 2.3.6测试一个项目,我得到的错误信息:INSTALL_FAILED_OLDER_SDK

i'm trying to test a project in my phone android 2.3.6 and i get the error message: INSTALL_FAILED_OLDER_SDK

该应用是关于图画两点之间的路线;

the app is about drawing the route between two points;

还有就是我的code: xml文件:

there is my code: the xml file:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" >

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

Java文件:

            package com.example.getroutexy2;

        import java.util.ArrayList;
        import java.util.List;

        import org.w3c.dom.Document;

        import com.google.android.gms.maps.CameraUpdateFactory;
        import com.google.android.gms.maps.GoogleMap;
        import com.google.android.gms.maps.SupportMapFragment;
        import com.google.android.gms.maps.model.LatLng;
        import com.google.android.gms.maps.model.MarkerOptions;
        import com.google.android.gms.maps.model.PolylineOptions;
        import com.google.android.maps.GeoPoint;
        import com.google.android.maps.Overlay;

        import android.app.ProgressDialog;
        import android.graphics.Color;
        import android.graphics.drawable.Drawable;
        import android.location.Location;
        import android.location.LocationManager;
        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.support.v4.app.FragmentActivity;
        import android.view.Menu;

        public class MainActivity extends FragmentActivity {

            List<Overlay> mapOverlays;
            GeoPoint point1, point2;
            LocationManager locManager;
            Drawable drawable;
            Document document;
            GMapV2GetRouteDirection v2GetRouteDirection;
            LatLng fromPosition;
            LatLng toPosition;
            GoogleMap mGoogleMap;
            MarkerOptions markerOptions;
            Location location ;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                v2GetRouteDirection = new GMapV2GetRouteDirection();
                SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager()
                  .findFragmentById(R.id.map);
                  mGoogleMap = supportMapFragment.getMap();

                  // Enabling MyLocation in Google Map
                  mGoogleMap.setMyLocationEnabled(true);
                  mGoogleMap.getUiSettings().setZoomControlsEnabled(true);
                  mGoogleMap.getUiSettings().setCompassEnabled(true);
                  mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
                  mGoogleMap.getUiSettings().setAllGesturesEnabled(true);
                  mGoogleMap.setTrafficEnabled(true);
                  mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(12));
                  markerOptions = new MarkerOptions();
                  fromPosition = new LatLng(11.663837, 78.147297);
                  toPosition = new LatLng(11.723512, 78.466287);
                  GetRouteTask getRoute = new GetRouteTask();
                  getRoute.execute();
            }

            private class GetRouteTask extends AsyncTask<String, Void, String> {

                private ProgressDialog Dialog;
                String response = "";
                @Override
                protected void onPreExecute() {
                      Dialog = new ProgressDialog(MainActivity.this);
                      Dialog.setMessage("Loading route...");
                      Dialog.show();
                }

                @Override
                protected String doInBackground(String... urls) {
                      //Get All Route values
                            document = v2GetRouteDirection.getDocument(fromPosition, toPosition, GMapV2GetRouteDirection.MODE_DRIVING);
                            response = "Success";
                      return response;

                }

                @Override
                protected void onPostExecute(String result) {
                      mGoogleMap.clear();
                      if(response.equalsIgnoreCase("Success")){
                      ArrayList<LatLng> directionPoint = v2GetRouteDirection.getDirection(document);
                      PolylineOptions rectLine = new PolylineOptions().width(10).color(
                                  Color.RED);

                      for (int i = 0; i < directionPoint.size(); i++) {
                            rectLine.add(directionPoint.get(i));
                      }
                      // Adding route on the map
                      mGoogleMap.addPolyline(rectLine);
                      markerOptions.position(toPosition);
                      markerOptions.draggable(true);
                      mGoogleMap.addMarker(markerOptions);

                      }

                      Dialog.dismiss();
                }
          }
          @Override
          protected void onStop() {
                super.onStop();
                finish();
          }

        }

            package com.example.getroutexy2;

        import java.io.InputStream;
        import java.util.ArrayList;

        import javax.xml.parsers.DocumentBuilder;
        import javax.xml.parsers.DocumentBuilderFactory;

        import org.apache.http.HttpResponse;
        import org.apache.http.client.HttpClient;
        import org.apache.http.client.methods.HttpPost;
        import org.apache.http.impl.client.DefaultHttpClient;
        import org.apache.http.protocol.BasicHttpContext;
        import org.apache.http.protocol.HttpContext;
        import org.w3c.dom.Document;
        import org.w3c.dom.Node;
        import org.w3c.dom.NodeList;

        import android.util.Log;

        import com.google.android.gms.maps.model.LatLng;

        public class GMapV2GetRouteDirection {

            public final static String MODE_DRIVING = "driving";
            public final static String MODE_WALKING = "walking";

            public GMapV2GetRouteDirection() { }

            public Document getDocument(LatLng start, LatLng end, String mode) {
                String url = "http://maps.googleapis.com/maps/api/directions/xml?"
                        + "origin=" + start.latitude + "," + start.longitude 
                        + "&destination=" + end.latitude + "," + end.longitude
                        + "&sensor=false&units=metric&mode=driving";

                try {
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpContext localContext = new BasicHttpContext();
                    HttpPost httpPost = new HttpPost(url);
                    HttpResponse response = httpClient.execute(httpPost, localContext);
                    InputStream in = response.getEntity().getContent();
                    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                    Document doc = builder.parse(in);
                    return doc;
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            public String getDurationText (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("duration");
                Node node1 = nl1.item(0);
                NodeList nl2 = node1.getChildNodes();
                Node node2 = nl2.item(getNodeIndex(nl2, "text"));
                Log.i("DurationText", node2.getTextContent());
                return node2.getTextContent();
            }

            public int getDurationValue (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("duration");
                Node node1 = nl1.item(0);
                NodeList nl2 = node1.getChildNodes();
                Node node2 = nl2.item(getNodeIndex(nl2, "value"));
                Log.i("DurationValue", node2.getTextContent());
                return Integer.parseInt(node2.getTextContent());
            }

            public String getDistanceText (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("distance");
                Node node1 = nl1.item(0);
                NodeList nl2 = node1.getChildNodes();
                Node node2 = nl2.item(getNodeIndex(nl2, "text"));
                Log.i("DistanceText", node2.getTextContent());
                return node2.getTextContent();
            }

            public int getDistanceValue (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("distance");
                Node node1 = nl1.item(0);
                NodeList nl2 = node1.getChildNodes();
                Node node2 = nl2.item(getNodeIndex(nl2, "value"));
                Log.i("DistanceValue", node2.getTextContent());
                return Integer.parseInt(node2.getTextContent());
            }

            public String getStartAddress (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("start_address");
                Node node1 = nl1.item(0);
                Log.i("StartAddress", node1.getTextContent());
                return node1.getTextContent();
            }

            public String getEndAddress (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("end_address");
                Node node1 = nl1.item(0);
                Log.i("StartAddress", node1.getTextContent());
                return node1.getTextContent();
            }

            public String getCopyRights (Document doc) {
                NodeList nl1 = doc.getElementsByTagName("copyrights");
                Node node1 = nl1.item(0);
                Log.i("CopyRights", node1.getTextContent());
                return node1.getTextContent();
            }

            public ArrayList<LatLng> getDirection (Document doc) {
                NodeList nl1, nl2, nl3;
                ArrayList<LatLng> listGeopoints = new ArrayList<LatLng>();
                nl1 = doc.getElementsByTagName("step");
                if (nl1.getLength() > 0) {
                    for (int i = 0; i < nl1.getLength(); i++) {
                        Node node1 = nl1.item(i);
                        nl2 = node1.getChildNodes();

                        Node locationNode = nl2.item(getNodeIndex(nl2, "start_location"));
                        nl3 = locationNode.getChildNodes();
                        Node latNode = nl3.item(getNodeIndex(nl3, "lat"));
                        double lat = Double.parseDouble(latNode.getTextContent());
                        Node lngNode = nl3.item(getNodeIndex(nl3, "lng"));
                        double lng = Double.parseDouble(lngNode.getTextContent());
                        listGeopoints.add(new LatLng(lat, lng));

                        locationNode = nl2.item(getNodeIndex(nl2, "polyline"));
                        nl3 = locationNode.getChildNodes();
                        latNode = nl3.item(getNodeIndex(nl3, "points"));
                        ArrayList<LatLng> arr = decodePoly(latNode.getTextContent());
                        for(int j = 0 ; j < arr.size() ; j++) {
                            listGeopoints.add(new LatLng(arr.get(j).latitude, arr.get(j).longitude));
                        }

                        locationNode = nl2.item(getNodeIndex(nl2, "end_location"));
                        nl3 = locationNode.getChildNodes();
                        latNode = nl3.item(getNodeIndex(nl3, "lat"));
                        lat = Double.parseDouble(latNode.getTextContent());
                        lngNode = nl3.item(getNodeIndex(nl3, "lng"));
                        lng = Double.parseDouble(lngNode.getTextContent());
                        listGeopoints.add(new LatLng(lat, lng));
                    }
                }

                return listGeopoints;
            }

            private int getNodeIndex(NodeList nl, String nodename) {
                for(int i = 0 ; i < nl.getLength() ; i++) {
                    if(nl.item(i).getNodeName().equals(nodename))
                        return i;
                }
                return -1;
            }

            private ArrayList<LatLng> decodePoly(String encoded) {
                ArrayList<LatLng> poly = new ArrayList<LatLng>();
                int index = 0, len = encoded.length();
                int lat = 0, lng = 0;
                while (index < len) {
                    int b, shift = 0, result = 0;
                    do {
                        b = encoded.charAt(index++) - 63;
                        result |= (b & 0x1f) << shift;
                        shift += 5;
                    } while (b >= 0x20);
                    int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
                    lat += dlat;
                    shift = 0;
                    result = 0;
                    do {
                        b = encoded.charAt(index++) - 63;
                        result |= (b & 0x1f) << shift;
                        shift += 5;
                    } while (b >= 0x20);
                    int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
                    lng += dlng;

                    LatLng position = new LatLng((double) lat / 1E5, (double) lng / 1E5);
                    poly.add(position);
                }
                return poly;
            }

        }

终于清单文件:

finally the manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.example.getroutexy2"
     android:versionCode="1"
     android:versionName="1.0" >

    <uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="17" />

<permission
    android:name="com.example.getroutexy2.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-permission android:name="com.example.getroutexy2.permission.MAPS_RECEIVE" />
<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.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.getroutexy2.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyCkdoZ..............." />

</application>

感谢,对关键我敢肯定,这是一个好

thanks, for the key i'm sure it's a good one

推荐答案

或者:

  • 您的设备未运行的是Android 2.3.6,或

  • Your device is not running Android 2.3.6, or

您的应用程序没有这个清单,或

Your application does not have this manifest, or

您是misinter preting的东西,或者

You are misinterpreting something, or

您的设备或应用程序是非常奇怪的。

Your device or app is very strange

INSTALL_FAILED_OLDER_SDK 如果设备的API等级低于你的机器人应只出现:的minSdkVersion 。在你的情况,安卓的minSdkVersion 7 ,这是Android 2.1系统。因此,你不应该收到此错误。

INSTALL_FAILED_OLDER_SDK should only occur if the API level of the device is below your android:minSdkVersion. In your case, android:minSdkVersion is 7, which is Android 2.1. Hence, you should not be getting this error.

这篇关于在安装APK时INSTALL_FAILED_OLDER_SDK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆