1.首先在AndroidManifest.xml文件中添加发送短信和获取位置信息的权限:
2.创建一个包含发送短信和获取位置信息的Activity:
public class MainActivity extends AppCompatActivity { private static final int MY_PERMISSIONS_REQUEST_SEND_SMS = 0; private static final int MY_PERMISSIONS_REQUEST_LOCATION = 1;
private LocationManager locationManager;
private String locationProvider;
private int locationPermissionGranted;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}else {
sendSMS();
}
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}else {
getLocation();
}
}
});
}
private void sendSMS() {
SmsManager smsManager = SmsManager.getDefault();
String location = getLocationString();
smsManager.sendTextMessage("12345", null, location, null, null);
Toast.makeText(this, "短信发送成功!", Toast.LENGTH_SHORT).show();
}
private void getLocation() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
locationProvider = locationManager.getBestProvider(criteria, true);
Location location = null;
if (locationManager != null) {
location = locationManager.getLastKnownLocation(locationProvider