隐式意图不起作用



我正在尝试从我的应用程序打开浏览器。

这是我的代码:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);

但是我一直收到此错误:

04-08 18:07:26.117 6133-6133/com.example.android.quakereport E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.android.quakereport, PID: 6133
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
    at android.app.Activity.startActivityForResult(Activity.java:4473)
    at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:65)
    at android.app.Activity.startActivityForResult(Activity.java:4430)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:711)
    at android.app.Activity.startActivity(Activity.java:4791)
    at android.app.Activity.startActivity(Activity.java:4759)
    at com.example.android.quakereport.EarthquakeActivity.startIntent(EarthquakeActivity.java:53)
    at com.example.android.quakereport.EarthquakeAdapter$1.onClick(EarthquakeAdapter.java:68)
    at android.view.View.performClick(View.java:6256)
    at android.view.View$PerformClick.run(View.java:24701)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

这是我的地震适配器代码:

currentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String url = QueryUtils.getURL(positionNum); EarthquakeActivity ea = new EarthquakeActivity(); ea.startIntent(url); } });

这是我的QueryUtils代码:

   `String url = "";
    try {
        JSONObject root = new JSONObject(SAMPLE_JSON_RESPONSE);
        JSONArray earthquakesArray = root.getJSONArray("features");
        JSONObject currentEarthquake = earthquakesArray.getJSONObject(arrayNum);
        JSONObject propertires = currentEarthquake.getJSONObject("properties");
        url = propertires.getString("url");
        Log.v("JSON", "url" + url);
    }catch (JSONException e) {
        Log.e("JSON", "Error");
    }
    return url;`

我已经检查过了,网址正在工作。

有人可以帮助我吗?

切勿自己创建活动的实例。只有框架才能成功创建活动。

摆脱:

EarthquakeActivity ea = new EarthquakeActivity();

相反,如果EarthquakeActivity是承载使用 EarthquakeAdapter AdapterView的活动,则将EarthquakeActivity传递到 EarthquakeAdapter 构造函数中,以便适配器可以访问它。

需要在清单文件中添加此权限

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

您的异常与startActivityForResult有关,如前所述:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference at android.app.Activity.startActivityForResult(Activity.java:4473) at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54) 

所以这可能是与你的隐含意图无关的东西的问题

android.app.Fragmentandroid.support.v4.app.Fragment不同,请确保您导入了正确的一个

还要确保您添加了互联网权限:

在清单中添加互联网权限

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

在清单文件中的清单标记之后添加它

它可以像:

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

最新更新