【发布时间】:2018-07-16 06:49:49
【问题描述】:
我正在尝试访问该位置并在单击按钮时在文本视图中显示纬度和经度。
这是我的代码:
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends Activity {
TextView textView, textView1;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
textView1 = findViewById(R.id.textView2);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean enableOnly = true;
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = locationManager.getProviders(enableOnly);
for (String provider : providers) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
textView.setText((int) location.getLatitude());
textView1.setText((int) location.getLatitude());
} else {
Toast.makeText(MainActivity.this, "sorry", Toast.LENGTH_SHORT).show();
}
return;
}
}
}
}
});
}
}
我正在测试的 AVD 是 Android 8.1 我还在 AndroidManifest 中设置了用户权限以访问粗略和精细位置。位置权限也被授予应用程序。
但是每当我点击按钮时,什么都没有发生。 请帮帮我。
【问题讨论】:
-
位置不为空,checkSelfPermission 不返回 false @BkSantiago
-
尝试在 onLocationChanged(Location location) 方法下获取位置
-
从 avd 设置中设置位置