标签: android-assets

如何从"assets"目录中读取文本文件作为字符串?

我的资产文件夹中有一个文件...如何阅读?

现在我正在尝试:

      public static String readFileAsString(String filePath)
        throws java.io.IOException{
            StringBuffer fileData = new StringBuffer(1000);
            BufferedReader reader = new BufferedReader(
                    new FileReader(filePath));
            char[] buf = new char[1024];
            int numRead=0;
            while((numRead=reader.read(buf)) != -1){
                String readData = String.valueOf(buf, 0, numRead);
                fileData.append(readData);
                buf = new char[1024];
            }
            reader.close();
            return fileData.toString();
        }
Run Code Online (Sandbox Code Playgroud)

但它抛出一个空指针异常......

该文件名为"origin",它位于文件夹资产中

我试着把它投射:

readFileAsString("file:///android_asset/origin");
Run Code Online (Sandbox Code Playgroud)

readFileAsString("asset/origin");``
Run Code Online (Sandbox Code Playgroud)

但都失败了......有什么建议吗?

java file-io android android-assets

8
推荐指数
3
解决办法
3万
查看次数

从Android Asset文件夹中读取xml文件

我正在尝试从assets文件夹中读取相同的文件" xmlfile.xml ",并从SD卡sdcard/download /中读取另一个副本.

我可以从SD卡读取:

  • 正确的回归真实
  • Esite Return True

我无法从Assets文件夹中读取:

  • 不正确的返回错误
  • Esite返回错误

这段代码不适用

        File source = new File("file:///android_asset/xmlfile.xml");
        boolean unfile = source.isFile();
        boolean Esiste = source.exists();

        try
        {
          // todo
        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

这段代码工作

        File source = new File("/sdcard/" + "download" + "/" + "xmlfile.xml");
        boolean unfile = source.isFile();
        boolean Esiste = source.exists();

        try
        {
          // todo
        } catch (Exception e)
        { …
Run Code Online (Sandbox Code Playgroud)

xml android android-assets

8
推荐指数
2
解决办法
2万
查看次数

Android:使用WebView播放资产声音

当用户点击我的应用程序的WebView上的标签时,我正试图从assets文件夹中播放声音.我发现我可以使用扩展WebViewClient的新类来检测链接的扩展名,如果是mp3文件,它可以通过默认的音频播放器播放.但是我想让它在没有开始新活动的情况下在活动中发挥作用.

我使用以下链接作为参考: Webview中的声音使用Uri创建MediaPlayer或使用资产中的文件时出错

但它没有用.

我尝试使用以下代码执行此操作:

package com.rangga.test.webview.sound;

import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyWebViewClient extends WebViewClient{

    public MediaPlayer mp;

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        if(url.endsWith(".mp3")){
            mp = new MediaPlayer();
            AssetFileDescriptor afd = getAssets().openFd(url);
            mp.setDataSource(afd.getFileDescriptor());
            mp.start();

            return true;
        }else{
            return true;
        }


    }

}
Run Code Online (Sandbox Code Playgroud)

我在getAssets()上得到一个未定义的方法错误,我尝试了谷歌它,它说了一些关于传递一个Context的事情.我是Android和面向对象编程的新手,所以我想知道这是否是正确的方法,以及是否有关于Context是什么的简单解释.谢谢.

以下是我的完整代码:

MainActivity.class

package com.rangga.test.webview.sound;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class MainActivity extends Activity {

    WebView webMain;

    /** Called when the activity is …
Run Code Online (Sandbox Code Playgroud)

audio android webview android-assets

8
推荐指数
1
解决办法
1万
查看次数

fnn在JNI C代码中获取失败的文件放在android应用程序的资源文件夹中

我在android应用程序的assets文件夹中保存了一些文件.

现在我编译该应用程序并获取apk.[当我提取那个apk我的文件在资产文件夹中时]

现在我在移动设备中安装apk

并且在该应用程序中有一些代码在c编程与JNI接口.

现在我fopen()对该文件的c编程调用失败了.

fopen("myfile","r");
Run Code Online (Sandbox Code Playgroud)

我知道在安装apk安卓复制资产文件时 /data/data/com.packagename/something

所以,有人知道这条道路,所以我可以放弃它 fopen()

或者是否有任何其他方法在C编程中打开该文件.


如果我将这些文件保存在sdcard文件夹中并像访问那样fopen("/sdcard/myfile","r");工作文件.但我想只将这些文件保存在assets文件夹中

c java android android-assets

8
推荐指数
1
解决办法
1000
查看次数

在Content Provider的帮助下打开资产文件时出现问题

我的要求是通过内容提供商从另一个应用程序打开一个应用程序的资产文件.(我使用ContentProvider实现公开该文件)

我能够打开几个文件并阅读,但在打开一些文件时我会遇到异常.请找到打开资产文件的实现.

@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException {
    AssetManager am = getContext().getAssets();
    String file_name = uri.getLastPathSegment();
    if(file_name == null) 
        throw new FileNotFoundException();
    AssetFileDescriptor afd = null;
    try {
        afd = am.openFd(file_name);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return afd;//super.openAssetFile(uri, mode);
}
Run Code Online (Sandbox Code Playgroud)

有时候am.openFd(file_name);会抛出一个例外说,

java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
at android.content.res.AssetManager.openAssetFd(Native Method)
at android.content.res.AssetManager.openFd(AssetManager.java:329)
at com.pineone.swfinstaller.SwfProvider.openAssetFile(SwfProvider.java:25)
at android.content.ContentProvider$Transport.openAssetFile(ContentProvider.java:218)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:234)
at android.os.Binder.execTransact(Binder.java:288)
at dalvik.system.NativeStart.run(Native Method) …
Run Code Online (Sandbox Code Playgroud)

java android android-assets

7
推荐指数
1
解决办法
4877
查看次数

使用file:/// android_res/drawable/url在eclipse下工作但不在生产中

我有一个让我疯狂的问题.我有一个静态的html文件(assets/help/index.html)需要包含一些图像.因为我想要不同密度的不同图像,并且图像已经包含在drawable- {ldpi,mdpi,hdpi}中,我想我会使用以下html代码:

<img src="file:///android_res/drawable/image.png">
Run Code Online (Sandbox Code Playgroud)

这在日食下工作得很好!不幸的是,在生产版本(使用maven android插件构建)中,显示html页面的webview显示了损坏的图像图标.

我尝试使用loadUrl和loadDataWithBaseUrl打开页面(首先自己读取文件),后者使用file:/// android_res/drawable的基本URL.两次尝试都在eclipse下成功但在maven版本中失败了.

所以我解压缩了Eclipse生成的apk和maven生成的一个并在两者之间做了一个diff -r,因为必须有明显区别.

我很困惑,只能找到一些微不足道的差异(主要是签署差异,因为eclipse apk用调试证书签名,而maven用我的官方证书签名).除此之外,apks的内容是相同的!

有没有人知道发生了什么或如何继续发现更多信息?

android android-assets

7
推荐指数
1
解决办法
3771
查看次数

Android:从资产文件夹复制数据库,但只获取一个空文件

各位,我将数据库从本地资产文件夹复制到/ data/data/package_name/databases目录时遇到问题.当我使用http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ 教程来做这件事时,我只能获得一个空文件.

我引用了copyDataBase()方法的一部分并没有区别.每次应用程序启动时,它都会创建目录和空数据库.那么有什么方法可以使copyDataBase()工作吗?

非常感谢你!!

sqlite android android-assets

7
推荐指数
2
解决办法
1万
查看次数

循环进度条

我想创建一个循环进度条,如下图所示

圆形进度条

我不知道创建此进度条的方法是什么.我不知道应该准备什么资产.

android android-assets android-animation android-progressbar

7
推荐指数
2
解决办法
1万
查看次数

资源文件夹中的Android外部数据库

我有一个Android应用程序,应该读取和扩展已经在sqlite上创建的数据库...它通过将数据库放在模拟器的文件浏览器上的"data/data /(packagename)/ database"文件夹中,可以在模拟器上正常工作.现在问题出现在真实设备上.显然它没有打开数据库.我试图将数据库放在assets文件夹中,但我没有用openhelper打开它.

database sqlite android android-assets

7
推荐指数
2
解决办法
1万
查看次数

新图像资产启动器图标失去透明度

我正在尝试在Android Studio中为应用添加启动器图标.

到目前为止我做了什么:

转到res文件夹右键单击并选择new image asset

从那里我找到了我想用作app启动器图标的png文件.

这一步可以在这里看到:http: //i.imgur.com/a1ubNf8.png

如您所见,源资产显示正确,没有白色背景.但是5种不同的图标类型具有白色背景并且失去透明度.

我希望应用程序图标保持透明度而不显示白色背景.

icons png android android-assets android-studio

7
推荐指数
1
解决办法
3624
查看次数