다른 클래스의 메소드 호출하기 질문입니다.

조회수 7048회

아래의 GPS확인하는 메소드를 MainActivity에서 호출하여 사용을 하려고 하는데 사용을 못하고 튕겨 나오네요. 고수님들의 조언이 필요합니다.

===GPS확인 클래스===

public class CheckGPS extends Activity{

public CheckGPS() {
}

public boolean chkGpsService() {

    //GPS가 켜져 있는지 확인함.
    String gpsEnabled = android.provider.Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

    if (!(gpsEnabled.matches(".*gps.*") && gpsEnabled.matches(".*network.*"))) {
        //gps가 사용가능한 상태가 아니면
        new AlertDialog.Builder(this).setTitle("GPS 설정").setMessage("GPS가 꺼져 있습니다. \nGPS를 활성화 하시겠습니까?").setPositiveButton("GPS 켜기", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int which) {
                //GPS 설정 화면을 띄움
                Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                startActivity(intent);
            }
        }).setNegativeButton("닫기", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

            }
        }).create().show();
    }
    return false;
}

}

===MainActivity==== strong text protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

//문제의 부분입니다. 사용을 못하고 있습니다.

    CheckGPS gps = new CheckGPS();
    gps.chkGpsService();

    Toast.makeText(getApplicationContext(), "정보를 읽어오는 중입니다.", Toast.LENGTH_LONG).show();
    intent = new Intent(this, CurrentLocatinActivity.class); //현재 위치 화면 띄우기 위해 인텐트 실행.
    startActivity(intent);
}
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • activity를 상속 받았다고해도 저렇게 호출하는 건 좀.....

    MainActivity에서

    gps.chkGpsService(this)
    

    이렇게 호출하고

    public class CheckGPS {
      public boolean chkGpsService(Activity activity) {
    
        //GPS가 켜져 있는지 확인함.
        String gpsEnabled = android.provider.Settings.Secure.getString(activity.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    
        if (!(gpsEnabled.matches(".*gps.*") && gpsEnabled.matches(".*network.*"))) {
          //gps가 사용가능한 상태가 아니면
          new AlertDialog.Builder(activity).setTitle("GPS 설정").setMessage("GPS가 꺼져 있습니다. \nGPS를 활성화 하시겠습니까?").setPositiveButton("GPS 켜기", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int which) {
              //GPS 설정 화면을 띄움
              Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
              activity.startActivity(intent);
            }
          }).setNegativeButton("닫기", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
    
            }
          }).create().show();
          return false;
        }
        return true;
      }
    }
    

    이런 식으로 하는 게 그나마 수정이 적겠네요.

    근데 보통은 LocationUtil 같은 클래스 만들어서 gps 가 켜져있는지 확인해주는 함수를 만드는 게 더 깔끔하지 않을까요?

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)