検索、検索、検索しましたが、問題の解決策が見つかりませんでした。
私は、人の現在の住所を返す非常に単純な位置情報を持っています。4.2.2 デバイスでアプリを開くと、通知バーに GPS アイコンが表示され、現在地ボタンを押すと住所が返されます。
ただし、アプリを 4.0.3 および 4.0.4 で実行すると、通知バーに GPS アイコンが表示されず、現在地をクリックするとアプリが閉じます。
私はAndroid開発に不慣れなので、なぜこれが起こっているのかわかりません。
誰でもそれを修正する方法について何か考えがありますか?
ありがとう。
これは私のマニフェスト ファイルの一部です。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATIO" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
コードの一部:
public class MainActivity extends Activity implement ActivityConstants {
private static final long MIN_DIST_CHANGE_FOR_UPDATES = 1; //in meters
private static final long MIN_TIME_BETWEEN_UPDATES = 0; //in milliseconds
protected LocationManager locationManager;
private String provider;
Criteria criteria;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager=LocationManager)getSystemService(Context.LOCATION_SERVICE);
criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
locationManager.requestLocationUpdates(provider, MIN_TIME_BETWEEN_UPDATES, MIN_DIST_CHANGE_FOR_UPDATES, new MyLocationListener());
}
public void myLocation(View view) {
Location location =locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// If location is not null show a Toast with the location.
if (location != null) {
String message = String.format("Current location \n Longitude: %1$s \n Latitude: %2$s", location.getLongitude(), location.getLatitude());
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Latitude and longitude were not found", Toast.LENGTH_LONG).show();
}
if (Geocoder.isPresent()) {
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
List<Address> addresses = null;
double latitude = location.getLatitude();
double longitude = location.getLongitude();
try {
addresses = geocoder.getFromLocation(latitude, longitude, 1);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
if (addresses.size() > 0) {
String address = "";
for (int i = 0; i < addresses.get(0).getMaxAddressLineIndex(); i++) {
address += addresses.get(0).getAddressLine(i) + "\n";
}
Toast.makeText(MainActivity.this, "Your current address is: \n" + address, Toast.LENGTH_LONG).show();
}
}
}