6

これが私の MyLocationListener クラスです

package com.example.gpslocater;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class MyLocationListener implements LocationListener {

        public TextView mLocationTextView;
    Context mContent;
    public MyLocationListener(Context context) {
        mContent = context;
    }
    @Override
    public void onLocationChanged(Location location) {

        location.getLatitude();
        location.getLongitude();

        String Text = "My current location is :" + 
        "Latitude = " + location.getLatitude() +
        " Longitude = " + location.getLongitude();
        //figure out a way to make it display through a text view
        mLocationTextView.setText(Text);
    }

    @Override
    public void onProviderDisabled(String provider) {
        Toast.makeText(mContent, "Gps Disabled", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onProviderEnabled(String provider) {
        Toast.makeText(mContent, "Gps Enabled", Toast.LENGTH_SHORT);


    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

}

これが私の GPS アクティビティ クラスです

public class GPSActivity extends Activity {
    private Button mGPSButton;
    private TextView mLatitudeTextView;
    private TextView mLongitudeTextView;
    private LocationManager mLocationManager;
    private LocationListener mLocationListener;

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

        mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        mLocationListener = new MyLocationListener(null);
        mGPSButton = (Button)findViewById(R.id.press_button);
        mGPSButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.g, menu);
        return true;
    }

}

実行すると機能しますが、ボタンを押すとプログラムが応答しなくなり、多くのエラーメッセージが表示されます 忙しい猫

java.lang.SecurityException "gps" ロケーション プロバイダーには ACCESS_FINE_LOCATION パーミッションが必要であるというエラー メッセージが表示されます。追加する必要がある場合、どこに追加すればよいですか? これが私のプログラムがクラッシュした原因だと思います。

4

5 に答える 5

11

提供されたlogcatから理解してください。これをマニフェストに追加します

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
于 2013-05-22T12:15:28.147 に答える
2

Android マニフェストに次のアクセス許可を追加する必要があります。

AndroidManifest.xml

...

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

...

Eclipse のアクセス許可エディターを使用することもできます。

于 2013-05-22T12:36:26.377 に答える
0

以下のアクセス許可をマニフェスト ファイルに追加します。

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>// missing in manifest file

いくつかの便利なリンク

権限一覧

http://developer.android.com/reference/android/Manifest.permission.html

マニフェスト ファイル

http://developer.android.com/guide/topics/manifest/manifest-intro.html

于 2013-05-22T12:15:34.320 に答える
-1

そうですね、使用許可が必要です

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
于 2013-05-22T12:16:26.220 に答える