[android]怪异的应用程序不工作在不同的移动

发布时间: 2017/3/19 14:30:43
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我公司开发的谷歌地图相关三星移动和释放在播放存储其中显示约 7000 支持设备的应用程序。我下载上三星移动应用程序时它是做工精细,但是不工作 Moto 和索尼的手机。

当我尝试到 debug 与摩托罗拉移动它是显示"关闭下来 VM"

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)

            

解决方法 1:

答︰ 对上述奇怪的问题,

我遇到很奇怪的问题作为讨论上述的我终于弄明白了由于 Geocoder 。上述问题的解决方案是非常简单,如下所示

Geocodergc 新 = Geocoder (这,Locale.getDefault());

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

在上面的代码fragment Geocoder 全局定义的。 这并不工作在不同的设备。仅在三星设备上的作品。我想出的解决办法最后工作在所有设备上 (测试三星,摩托罗拉,索尼)。

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 Geocoder 本地定义的函数内。

此解决方案为我工作。我希望在将来有人遇到同样的问题可能此解决方案可帮助。

谢谢你

赞助商