无法在 android 中强制转换为 android.location.LocationListener

Posted

技术标签:

【中文标题】无法在 android 中强制转换为 android.location.LocationListener【英文标题】:cannot be cast to android.location.LocationListener in android 【发布时间】:2021-01-02 06:23:11 【问题描述】:

我正在尝试在我的应用程序中访问 GPS。 我已授予权限,但仍然出现错误。

如果我将导入而不是 import com.google.android.gms.location.LocationListenerimport android.location.LocationListener;

mLocService.requestLocationUpdates(mLocProvider.getName(), getGpsUpdatePeriod(prefs), getGpsDistanceUpdatePeriod(prefs), (android.location.LocationListener) this);

代码正在编译,但它没有进入 if() 条件并且“gps 权限--->2”没有进入日志。

import com.google.android.gms.location.LocationListener;


public class MainActivity extends RoboActivity implements ObdProgressListener, LocationListener, GpsStatus.Listener 

public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    gpsStart();


 private synchronized void gpsStart() 
    if (!mGpsIsStarted && mLocProvider != null && mLocService != null && mLocService.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
        Log.d(TAG, "gps permission--->1");
        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.
           Log.d(TAG, "gps permission--->2");
            mLocService.requestLocationUpdates(mLocProvider.getName(), getGpsUpdatePeriod(prefs), getGpsDistanceUpdatePeriod(prefs), (com.google.android.gms.location.LocationListener) this);
            mGpsIsStarted = true;
            return;
        
  else 
        Log.d(TAG, "gps permission--->3");
        gpsStatusTextView.setText(getString(R.string.status_gps_no_support));
    




 

在android中获取将第4个参数转换为'android.location.LocationListener'

如果我像下面这样给出,

mLocService.requestLocationUpdates(mLocProvider.getName(), getGpsUpdatePeriod(prefs), getGpsDistanceUpdatePeriod(prefs), (android.location.LocationListener) this);

出现错误**无法转换为 android.location.LocationListener**

【问题讨论】:

显示更多代码并提供更详细的问题描述。事实上目前没有问题......你的班级有implements LocationListener吗? 感谢您的回复。当然,我会的。 【参考方案1】:

似乎requestLocationUpdates() 需要android.location.LocationListener 作为第四个参数,但您传递给它的是com.google.android.gms.location.LocationListener,尽管它具有相同的名称(除了包)是一个完全不同的类。

所以基本上,这就像在需要字符串时传递一个整数。

【讨论】:

感谢@Ridcully 的回复。正是它期待“android.location.LocationListener”,当我这个参数没有进入权限if()条件时。我在堆栈中看到了一些答案,我们必须给出“com.google.android.gms.location.LocationListener”是否正确?

以上是关于无法在 android 中强制转换为 android.location.LocationListener的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 parse.com 云功能 Android 将 Json 对象强制转换为 Float

带有子项的 Android ListView 导致无法将 TwoLineListItem 强制转换为 android.widget.TextView

引起:java.lang.ClassCastException:android.widget.FrameLayout无法强制转换为com.appeaser.sublimepickerlibrary.S

android.widget.RelativeLayout无法强制转换为android.widget.EditText

android.widget.RadioGroup无法强制转换为android.widget.RadioButton

错误:android.widget.LinearLayout 无法转换为 android.widget.ImageView