Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我有一个活动,我想调用GPS类的一个函数,该函数返回adrress字符串_Java_Android_Gps - Fatal编程技术网

Java 我有一个活动,我想调用GPS类的一个函数,该函数返回adrress字符串

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

这是我的活动,我想获得在其他活动中获得的adress字符串。但我不知道怎么称呼它。我需要第二个类中的一个方法,以便它返回字符串

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;
}