Java 我有一个活动,我想调用GPS类的一个函数,该函数返回adrress字符串
这是我的活动,我想获得在其他活动中获得的adress字符串。但我不知道怎么称呼它。我需要第二个类中的一个方法,以便它返回字符串Java 我有一个活动,我想调用GPS类的一个函数,该函数返回adrress字符串,java,android,gps,Java,Android,Gps,这是我的活动,我想获得在其他活动中获得的adress字符串。但我不知道怎么称呼它。我需要第二个类中的一个方法,以便它返回字符串 public class GPS extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, GoogleApiClient.OnConnectionFailedListener { Context mContext = this; FindGps find
public class GPS extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, GoogleApiClient.OnConnectionFailedListener {
Context mContext = this;
FindGps findGps;
private TextView loc;
private TextView fullname;
private TextView email;
private ImageView profile_image;
private String mUsername, mEmail;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps);
mToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(mToolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
mDrawerLayout.addDrawerListener(mToggle);
mToggle.syncState();
loc = mToolbar.findViewById(R.id.address);
findGps.findLocation();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView);
navigationView.setNavigationItemSelectedListener(this);
View header = navigationView.getHeaderView(0);
fullname = header.findViewById(R.id.name);
email = header.findViewById(R.id.email);
profile_image = header.findViewById(R.id.profileImage);
sharedPrefManager = new SharedPrefManager(mContext);
mUsername = sharedPrefManager.getName();
mEmail = sharedPrefManager.getUserEmail();
String uri = sharedPrefManager.getPhoto();
Uri mPhotoUri = Uri.parse(uri);
fullname.setText(mUsername);
email.setText(mEmail);
Picasso.with(mContext)
.load(mPhotoUri)
.placeholder(android.R.drawable.menuitem_background)
.error(android.R.drawable.menuitem_background)
.into(profile_image);
configureSignIn();
}
private void configureSignIn() {
GoogleSignInOptions options = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
// Build a GoogleApiClient with access to GoogleSignIn.API and the options above.
mGoogleApiClient = new GoogleApiClient.Builder(mContext)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, options)
.build();
mGoogleApiClient.connect();
}
//method to logout
private void signOut(){
new SharedPrefManager(mContext).clear();
mAuth.signOut();
Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
Intent intent = new Intent(GPS.this, MainActivity.class);
startActivity(intent);
finish();
}
}
);
sharedPrefManager.clear();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(mToggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id=item.getItemId();
if(id == R.id.nav_account) {
Toast.makeText(this,"Account Edit Here",Toast.LENGTH_SHORT).show();
}
if (id == R.id.settings) {
Toast.makeText(this,"Settings",Toast.LENGTH_SHORT).show();
}
if (id == R.id.logout) {
signOut();
//sharedPrefManager.clearUserName(GPS.this);
}
//close navigation drawer
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
公共类GPS扩展AppCompatActivity实现NavigationView.OnNavigationItemSelectedListener、GoogleAppClient.OnConnectionFailedListener{
Context mContext=这个;
FindGps FindGps;
私有文本视图loc;
私有文本视图全名;
私人文本查看电子邮件;
私有图像查看配置文件_图像;
私人字符串mUsername,mEmail;
私人抽屉布局mDrawerLayout;
私人行动bardrawertoggle mtogle;
私有工具栏mToolbar;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps);
mToolbar=(工具栏)findviewbyd(R.id.my_工具栏);
设置支持操作栏(mToolbar);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mToggle=newactionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
mDrawerLayout.addDrawerListener(MTOGLE);
mToggle.syncState();
loc=mToolbar.findViewById(R.id.address);
findGps.findLocation();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView NavigationView=(NavigationView)findViewById(R.id.NavigationView);
navigationView.setNavigationItemSelectedListener(此);
视图标题=navigationView.getHeaderView(0);
fullname=header.findviewbyd(R.id.name);
email=header.findviewbyd(R.id.email);
profile_image=header.findviewbyd(R.id.profileImage);
sharedPrefManager=新的sharedPrefManager(mContext);
mUsername=sharedPrefManager.getName();
mEmail=sharedPrefManager.getUserEmail();
字符串uri=sharedPrefManager.getPhoto();
urimphotouri=Uri.parse(Uri);
全名.setText(mUsername);
email.setText(mEmail);
毕加索(McContext)
.load(姆霍图里)
.placeholder(android.R.drawable.menuitem\u背景)
.error(android.R.drawable.menuitem\u后台)
.进入(配置文件\图像);
configureSignIn();
}
私有无效配置签名(){
GoogleSignionOptions=新建GoogleSignionOptions.Builder(GoogleSignionOptions.DEFAULT\u登录)
.requestEmail()
.build();
//通过访问GoogleSignIn.API和上述选项构建GoogleAppClient。
mgoogleapclient=新的Googleapclient.Builder(mContext)
.enableautomanager(此/*FragmentActivity*/,此/*OnConnectionFailedListener*/)
.addApi(Auth.GOOGLE\u登录\u API,选项)
.build();
mGoogleApiClient.connect();
}
//注销的方法
私有无效签出(){
新建SharedPrefManager(mContext.clear();
mAuth.signOut();
Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient.setResultCallback)(
新的ResultCallback(){
@凌驾
public void onResult(@NonNull状态){
意向意向=新意向(GPS.this,MainActivity.class);
星触觉(意向);
完成();
}
}
);
sharedPrefManager.clear();
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
如果(MTOGLE.onOptionsItemSelected(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
公共布尔值onNavigationItemSelected(@NonNull MenuItem item){
int id=item.getItemId();
if(id==R.id.nav_账户){
Toast.makeText(这是“在此处编辑帐户”,Toast.LENGTH_SHORT).show();
}
if(id==R.id.settings){
Toast.makeText(这是“设置”,Toast.LENGTH_SHORT).show();
}
if(id==R.id.logout){
签出();
//sharedPrefManager.clearUserName(GPS.this);
}
//关闭导航抽屉
mDrawerLayout.closeDrawer(重力compat.START);
返回true;
}
@凌驾
public void onconnection失败(@NonNull ConnectionResult ConnectionResult){
}
现在,我有一个活动,可以获得地址的位置
public String findLocation()
{
String address=null;
Location location = null;
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(!gps)
{
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION)!=
PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]
{android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION,
android.Manifest.permission.INTERNET},10);
//return;
}
else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,3000,0,this);
}
}
Latitude = location.getLatitude();
Longitude = location.getLongitude();
String str = Latitude + " " + Longitude;
Log.d("Lat lng:",str);
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
try {
List<Address> addressList = geocoder.getFromLocation(Latitude,Longitude,1);
if (addressList!=null && addressList.size()>0)
{
String cityName = addressList.get(0).getLocality().toString();
String sublocal = addressList.get(0).getSubLocality().toString();
address = sublocal + ", " +cityName;
}
} catch (IOException e) {
e.printStackTrace();
}
return address;
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
公共字符串findLocation()
{
字符串地址=空;
位置=空;
locationManager=(locationManager)getSystemService(Context.LOCATION\u服务);
gps=locationManager.isProviderEnabled(locationManager.gps\U提供程序);
如果(!gps)
{
}
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
if(checkSelfPermission(android.Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予
&&ActivityCompat.checkSelfPermission(这个,android.Manifest.permission.ACCESS\u位置)=
PackageManager.权限(已授予){
requestPermissions(新字符串[])
{android.Manifest.permission.ACCESS\u FINE\u LOCATION,android.Manifest.permission.ACCESS\u rough\u LOCATION,
android.Manifest.permission.INTERNET},10);
//返回;
}
否则{
locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,3000,0,本);
}
}
纬度=位置。getLatitude();
Longitude=location.getLongitude();
字符串str=纬度+“”+经度;
日志d(“横向液化天然气:”,str);
Geocoder Geocoder=新的Geocoder(getApplicationContext(),Locale.getDefault());
试一试{
List addressList=geocoder.getFromLocation(纬度、经度,1);
if(addressList!=null&&addressList.size()>0)
{
字符串cityName=addressList.get(0.getLocality().toString();
String sublocal=addressList.get(0.getSubLocality().toString();
地址=子本地+“,”+城市名称;
}
}捕获(IOE异常){
e、 printStackTrace();
}
回信地址;
}
@凌驾
公共位置无效
public class GPS extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, GoogleApiClient.OnConnectionFailedListener, LocationListener {
private String getCompleteAddressString() {
LocationManager locationManager;
Location location;
double latitude, longitude;
String strAdd = "";
locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return null;
}
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
Log.d("old", "lat : " + latitude);
Log.d("old", "long : " + longitude);
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<android.location.Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
if (addresses != null) {
android.location.Address returnedAddress = addresses.get(0);
StringBuilder strReturnedAddress = new StringBuilder("");
for (int i = 0; i <= returnedAddress.getMaxAddressLineIndex(); i++) {
strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
}
strAdd = strReturnedAddress.toString();
} else {
strAdd = "No Address returned!";
}
} catch (Exception ex) {
strAdd = "Canont get Address!";
}
}
return strAdd;
}