【问题标题】:FATAL EXCEPTION: main on Android App致命例外:主要在 Android 应用程序上
【发布时间】:2017-09-12 04:33:38
【问题描述】:

我遇到了这个致命的异常:主要错误。只有当我点击我的应用程序上的“选择地点”按钮时。

点击“Pick A Place”按钮时的 logcat 报告如下:

04-13 13:52:19.418 10737-10737/cct.mad.lab E/AndroidRuntime: FATAL EXCEPTION: main
                                                         Process: cct.mad.lab, PID: 10737
                                                         java.lang.NoSuchMethodError: cct.mad.lab.SettingsActivity.checkSelfPermission
                                                             at cct.mad.lab.SettingsActivity.calculateCurrentCoordinates(SettingsActivity.java:679)
                                                             at cct.mad.lab.SettingsActivity.onPrepareDialog(SettingsActivity.java:581)
                                                             at android.app.Activity.onPrepareDialog(Activity.java:3061)
                                                             at android.app.Activity.showDialog(Activity.java:3124)
                                                             at android.app.Activity.showDialog(Activity.java:3075)
                                                             at cct.mad.lab.SettingsActivity$8.onClick(SettingsActivity.java:374)
                                                             at android.view.View.performClick(View.java:4438)
                                                             at android.view.View$PerformClick.run(View.java:18422)
                                                             at android.os.Handler.handleCallback(Handler.java:733)
                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                             at android.os.Looper.loop(Looper.java:136)
                                                             at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                             at java.lang.reflect.Method.invoke(Method.java:515)
                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                             at dalvik.system.NativeStart.main(Native Method)

在检查“自我许可”以使用“calculateCurrentCooridnates”方法时,logcat 指向“NoSuchMethodError”。该方法如下:

@TargetApi(Build.VERSION_CODES.M)
private void calculateCurrentCoordinates() {
    float lat = 0, lon = 0;

    try {
        LocationManager locMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
        if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    Activity#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 Activity#requestPermissions for more details.
            return;
        }
        Location recentLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        lat = (float) recentLoc.getLatitude();
        lon = (float) recentLoc.getLongitude();
    } catch (Exception e) {
        Log.e(DEBUG_TAG, "Location failed", e);
    }

    mFavPlaceCoords = new GPSCoords(lat, lon);
}

ToDo 是在 Android Studio 自动添加“@TargetAPI”位​​时自动生成的。考虑到这一点,我在清单中添加了以下内容,由于没有出现更多错误,我认为这就足够了:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

但是,应用程序只是崩溃了。

非常感谢任何帮助。

谢谢

【问题讨论】:

  • 从 logcat 我可以看出错误发生在第 679 行的calculateCurrentCoordinates 方法
  • 调试问题,看看有什么问题
  • 错误是NoSuchMethodError,最后说方法是checkSelfPermission
  • 这是一个提示使用它
  • @OmarAbdelhafiz 我确实使用它作为提示,但我认为我在清单中包含了这一点:跨度>

标签: java android main fatal-error android-gps


【解决方案1】:

这样做

公共类 SettingsActivity 扩展 AppCompatActivity {

【讨论】:

    【解决方案2】:

    扩展 AppCompatActivity 将解决此问题。

    【讨论】:

    • 我该怎么做呢?
    • 按照@Shadowflyx 在他的回答中提到的那样做:public class SettingsActivity extends AppCompatActivity {
    • 我想这就是你的意思。我已经尝试过了,但它把其他所有东西都搞砸了,说它无法解析符号
    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多