【问题标题】:Open and show internationalized HTML resource in an activity在活动中打开并显示国际化的 HTML 资源
【发布时间】:2012-04-23 20:01:16
【问题描述】:

我想在 HTML 中制作特定语言的帮助文件并使用浏览器查看它们。
作为第一个版本,我将英文版放在 res/raw 中(似乎没有 html 或 doc 目录)。
启动我找到的浏览器:

        String URL = "android.resource://" + getPackageName() + "/" + R.raw.help;
        Uri u = Uri.parse(URL);
        Intent intent = new Intent(Intent.ACTION_VIEW, u);
        startActivity(intent);

但它总是抛出 ApplicationNotFound-Exception。

查看变量,我可以看到 URL 是:

         android.resource://[PACKAGE_NAME]/[NUMBER]

这也是你的内容。 Uri.parse 只是复制给定的字符串。

我的问题:

我做错了什么?
还有其他方法吗?
系统会在 res/raw-de 中找到文件吗?

【问题讨论】:

    标签: android resources


    【解决方案1】:

    您可以使用以下命令从“Assets”文件夹中打开一个 html 页面

    //help_activity.xml
    <?xml version="1.0" encoding="utf-8"?>
      <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/helpwebview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
    

    在资源文件中,例如在 strings.xml 中。 “file:///android_asset”对应Android项目中的“Assets”文件夹。

    <string name="help_url">file:///android_asset/help/index_de.html</string>
    

    //HelpActivity 代码

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    
    public class HelpActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.help_activity);
            WebView browser = (WebView)findViewById(R.id.helpwebview);
    
            WebSettings settings = browser.getSettings();
            settings.setJavaScriptEnabled(true);
            settings.setBuiltInZoomControls(true);
            browser.loadUrl(getString(R.string.help_url));
        }
    
    }
    

    【讨论】:

    • 非常感谢!我会这样做!
    【解决方案2】:

    另一种方法是使用资源文件直接加载WebView。

    WebView wv = (WebView) findViewById(R.id.webView1);
    wv.loadUrl("file:///android_asset/your_html_file.html");
    

    确保将所有文件放在 Assets 文件夹中

    【讨论】:

    • 我必须使用资产目录吗?
    • 但是我必须为给定的语言选择正确的文件。我必须弹出一个 WebView。
    【解决方案3】:

    这就是我的做法:

    String summary = readRawTextFile(this,R.raw.help);
    mWebView.loadDataWithBaseURL (null,summary, "text/html","UTF-8" ,null);
    

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多