8

基本上,我想从维基百科检索内容。但我想直接在我的 Android 应用程序中显示它。不是立即重定向到互联网浏览器,而是首先在我的应用程序中显示它。

目前,我设法通过使用http://en.wikipedia.org/w/api.php?action=parse&prop=text&format=xml&page=Bla_Bla_Bla请求 Wikipedia API 并仅获取主要内容。并且因为我解析数据,所以我将使用 WebView 在 Android 中进行渲染。它成功渲染。但仅限于那些不受保护的文章...

如果它受到Mona Lisa等保护,则输出未在 WebView Android 中正确呈现。

我想知道是否有人尝试检索维基百科内容并将其显示在您的 Android 应用程序中,轻松而美观?

谢谢 :)

4

4 回答 4

3

我设法找到了答案。我想我把这件事复杂化了。我们实际上可以在不调用 mediawiki API 的情况下完美地检索内容。
维基百科已经提供了一个移动界面。

我只需要使用 WebView 来加载http://en.m.wikipedia.org/wiki/并在 url 的末尾添加主题。
例如蒙娜丽莎网站: https ://en.m.wikipedia.org/wiki/Mona_Lisa

参考资料: http ://en.wikipedia.org/wiki/Help:Mobile_access#Official_online_version

于 2011-05-28T18:50:14.093 回答
0

我可能会检索 api 调用的 json 版本(在请求 uri 中使用 format=json)。您已经设法检索数据(我猜是使用 HttpPost 或 HttpGet),所以现在只需检索正确的数据以供您的应用程序使用。

我目前正在编写一个从服务器检索 JSON 的应用程序,并且获取内容非常容易。只需实例化一个 JSONObject 并将来自服务器的 json 结果提供给它,然后使用对象中的 get 方法检索数据。

简单的例子:

JSONObject jsonObject = new JSONObject(responseTextFromServer);
String query = jsonObject.getString("query");
// and so on...
于 2011-05-22T12:02:23.327 回答
0
// this is main activity code. I have added list of cars and when clicked it displays the wikipedia about it

package com.example.google_phones;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    ListView listView_google_phones;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView_google_phones= (ListView)findViewById(R.id.listView_phones);
        final ArrayList<String> arrayList= new ArrayList<>();
        arrayList.add("Google Pixel");
        arrayList.add("Google Pixel XL");
        arrayList.add("Google Pixel 2");
        arrayList.add("Google Pixel 2XL");
        arrayList.add("Google Pixel 3");
        arrayList.add("Pixel_3");



         ArrayAdapter arrayAdapter= new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,arrayList);
        listView_google_phones.setAdapter(arrayAdapter);

        listView_google_phones.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Intent intent = new Intent(MainActivity.this,wikipedia_search.class);
                intent.putExtra("Phone_name", listView_google_phones.getItemAtPosition(position).toString());
                startActivity(intent);
            }
        });
    }
}

// this is second activity code when user clicks on any one of the phones

package com.example.google_phones;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class wikipedia_search extends AppCompatActivity {
 WebView webView_wiki;
 private String search_string;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wikipedia_search);

        webView_wiki= (WebView)findViewById(R.id.webView);
        webView_wiki.setWebViewClient(new WebViewClient());
        Bundle bundle=getIntent().getExtras();
        if(bundle!=null){
            webView_wiki.loadUrl("http://en.m.wikipedia.org/wiki/"+bundle.getString("Phone_name"));
        }

    }
}
于 2020-04-30T00:51:32.620 回答
0
this is main activity

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/listView_phones"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>


this is second activity xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".wikipedia_search">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>
于 2020-04-30T00:55:27.917 回答