3

アプリで Android 4.0.3 バージョンを使用しています。LATITUDELONGITUDEから都市名やその他の情報を取得したい のですが、アプリを実行するとサービスが利用できないことが表示されます。

ログキャット

  01-10 13:58:29.279: W/System.err(1211): java.io.IOException: Service not Available
    01-10 13:58:29.289: W/System.err(1211):     at android.location.Geocoder.getFromLocation(Geocoder.java:136)
    01-10 13:58:29.299: W/System.err(1211):     at com.example.vixxa.VisitorActivity$CityAsyncTask.doInBackground(VisitorActivity.java:601)
    01-10 13:58:29.319: W/System.err(1211):     at com.example.vixxa.VisitorActivity$CityAsyncTask.doInBackground(VisitorActivity.java:1)
    01-10 13:58:29.329: W/System.err(1211):     at android.os.AsyncTask$2.call(AsyncTask.java:264)
    01-10 13:58:29.329: W/System.err(1211):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    01-10 13:58:29.339: W/System.err(1211):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    01-10 13:58:29.349: W/System.err(1211):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    01-10 13:58:29.349: W/System.err(1211):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    01-10 13:58:29.359: W/System.err(1211):     at java.lang.Thread.run(Thread.java:856)

CodeAsynctak.java

public class CityAsyncTask extends AsyncTask<String , String,String>
    {

        @Override
        protected String doInBackground(String... params) {

             Geocoder geocoder = new Geocoder(VisitorActivity.this, Locale.getDefault());
                try
                {
                    List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
                    Log.e("Addresses","-->"+addresses);

                }
                catch (IOException e)
                {
                    e.printStackTrace();

                }

            return null;
        }

    }
4

4 に答える 4

4

このコードを使ってみてください、それは私のTAB2で動作しました。

public class CityAsyncTask extends AsyncTask<String , String,String>
{

    @Override
    protected String doInBackground(String... params) {

         Geocoder geocoder = new Geocoder(LatLongActivity.this, Locale.getDefault());
            try
            {
                List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
                Log.e("Addresses","-->"+addresses);
                result = addresses.get(0).toString();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        return result;
    }
    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        AlertDialog.Builder alert = new AlertDialog.Builder(LatLongActivity.this);
        alert.setTitle("ADDRESS");
        alert.setMessage(result);
        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });
        alert.setCancelable(false);
        alert.show();
    }
}
于 2013-01-10T13:39:54.270 に答える
3

私が私のアプリケーションでそれを使用した以下のコードで試してみてください:

Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);

        try {
            List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);

            if(addresses != null) {
                Address returnedAddress = addresses.get(0);
                StringBuilder strReturnedAddress = new StringBuilder("Address:\n");
                for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
                    strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
                }
                myAddress.setText(strReturnedAddress.toString());
            }
            else{
                myAddress.setText("No Address returned!");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            myAddress.setText("Can not get Address!");
        }
于 2013-01-10T09:24:41.087 に答える
1

ほとんどの場合、プロジェクトのビルド ターゲットAndroid 4.0Google APIs. でEclipse、プロジェクトを右クリックしてプロパティを選択し、Android に移動して、Google APIs

于 2013-01-10T09:14:43.417 に答える
0

Service Not Availableエラーを解決するには

この行をマニフェストの直接の子としてアプリケーションに追加します

<uses-library android:name="com.google.android.maps"/>

このようにマニフェストを更新します

<application
        android:name="pkgname"
        android:allowBackup="true"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:theme="@style/AppTheme" >
        <uses-library android:name="com.google.android.maps" />

        <activity
            android:name=".yourlaunchingactivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
   <activity
             .......
     </activity>
   <activity
             ......
       </activity>
</application>
于 2015-07-21T12:57:33.407 に答える