我想制作一个简单的Android应用程序,向我显示用户位置,并祝酒设备IMEI。我不知道出了什么问题,因为我是android-studio的新手,并且构建输出不会向我显示错误行。
package com.example.mainactivity;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnSuccessListener;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermission();
client = LocationServices.getFusedLocationProviderClient(this);
Button button = findViewById(R.id.Locatie);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ActivityCompat.checkSelfPermission(MainActivity.this,
ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
client.getLastLocation().addOnSuccessListener(MainActivity.this, new
OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location!= null) {
}
}
})
}
});
}
private void requestPermission() {
ActivityCompat.requestPermissions(this, new String[]
{ACCESS_FINE_LOCATION},1);
}
public String getDeviceIMEI() {
String deviceUniqueIdentifier = null;
TelephonyManager tm = (TelephonyManager)
this.getSystemService(Context.TELEPHONY_SERVICE);
if(null != tm) {
deviceUniqueIdentifier = tm.getDeviceId();
}
if(null == deviceUniqueIdentifier || 0 ==
deviceUniqueIdentifier.length()) {
deviceUniqueIdentifier =
Settings.Secure.getString(this.getContentResolver(),
Settings.Secure.ANDROID_ID);
}
Toast toast = Toast.makeText(this, deviceUniqueIdentifier, 300);
toast.show();
return deviceUniqueIdentifier;
}
}
我希望在烤面包窗上看到设备的lat和lnf以及imei。我不认为这很有用,但我是Android新手。
最佳答案
添加此3 permission
:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
根据您的活动更改详细信息:
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
client = LocationServices.getFusedLocationProviderClient(this);
Button button = findViewById(R.id.Chk);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.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;
}
client.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location!=null){
TextView textView = findViewById(R.id.textView);
Double longitude = location.getLongitude();
Double latitude = location.getLatitude();
textView.setText(String.valueOf(longitude+ " "+latitude));
}
}
});
}
});
}
}
这是xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_centerVertical="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
<Button
android:id="@+id/Chk"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="Check Location"
android:textAllCaps="false"
android:textColor="@color/colorAccent" />
</LinearLayout>
</RelativeLayout>
在build.gradle(Application)中添加以下内容:
allprojects {
repositories {
google()
jcenter()
maven {
url "https://maven.google.com"
}
}
}
并在build.gradle(Module:app)中添加此依赖项:
implementation 'com.google.android.gms:play-services:11.0.0'
这是我的截图:
关于java - 我在制作可找到用户经纬度和设备IMEI的应用程序时遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57284247/