java - 奇怪的应用程序无法在不同的手机上运行

标签 java android mobile google-maps-api-2

我在三星手机上开发了一个与 Google map 相关的应用程序,并在 Play 商店中发布,其中显示了大约 7000 个支持的设备。当我在三星手机上下载该应用程序时,它工作正常,但在摩托罗拉和索尼手机上却无法工作。

当我尝试使用 Moto 移动设备进行调试时,它显示“正在关闭虚拟机”

06-20 00:17:25.276      457-457/com.mycompany.mypackage D/AndroidRuntime﹕ Shutting down VM
06-20 00:17:25.281      457-457/com.mycompany.mypackage E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.mycompany.mypackage, PID: 457
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycompany.mypackage/com.mycompany.mypackage.MapsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
        at android.app.ActivityThread.access$800(ActivityThread.java:148)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5312)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
        at android.content.ContextWrapper.getPackageName(ContextWrapper.java:131)
        at android.location.GeocoderParams.<init>(GeocoderParams.java:50)
        at android.location.Geocoder.<init>(Geocoder.java:83)
        at com.mycompany.mypackage.MapsActivity.<init>(MapsActivity.java:96)
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.Class.newInstance(Class.java:1572)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1088)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)

            

最佳答案

答:对于上面这个奇怪的问题,

我遇到了上面讨论的非常奇怪的问题,由于地理编码器,我终于弄清楚了。上述问题的解决方案非常简单,如下所示

Geocoder gc = new Geocoder(this, Locale.getDefault());

public class MapsActivity extends FragmentActivity implements .... {
...............
Geocoder gc = new Geocoder(this, Locale.getDefault());
@Override
protected void onCreate(Bundle savedInstanceState) {
............
      }
............
}

在上面的代码 fragment 中全局定义了Geocoder。 这不适用于不同的设备。仅适用于三星设备。我找到的解决方案最终适用于所有设备(在三星、Moto、索尼上测试)。

public class MapsActivity extends FragmentActivity implements .... {
...............
@Override
protected void onCreate(Bundle savedInstanceState) {
............
      }
public void send(View view) {
    try {
        Geocoder gc = new Geocoder(this, Locale.getDefault());
        List<Address> list = gc.getFromLocationName(message, 1);
.........}
    }
............
}

在上面的代码 fragment 中,在函数内部本地定义了地理编码器。

这个解决方案适合我。我希望将来有人遇到同样的问题,这个解决方案可能会有所帮助。

谢谢

关于java - 奇怪的应用程序无法在不同的手机上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30945785/

相关文章:

java - 握手后 SSLSocket getOutputStream() 阻塞

Android - 使我的应用程序可从应用程序列表和 "Share"菜单启动

android - 在玻璃应用程序中创建 "ok glass"样式菜单

java - Jedis 库在幕后是如何工作的?

java - Eclipse 无法从 Java 8 流中推断出正确的类型

ios - 有没有适用于 phonegap 2.7.0 的 Facebook 插件?

ios - 查找手机的公共(public) IP 地址以通过 SSH 连接到 EC2 服务器

javascript - window.prompt 在移动设备上的阻塞行为不一致

java.lang.NoSuchFieldError : INSTANCE - WebDriver

android - Google 询问 Google Play 是否需要政策,但我在 list 文件中拥有有效权限?