如何在没有activity的情况下获取Android资产

3
我有一个非可视类需要从资产文件夹读取一些文件。 这完全是离线的,因此没有活动。我如何引用它,而不需要传递活动? 另外,我可以接受一种替代方案来放置文件(如.sql),以便稍后在Android设备上读取。

P.D:

这是一个调用代码的示例:

//Load asset not belong to anyone. Is that radical
let loadAsset(path:string) =
    #if __ANDROID__
    let sr = new StreamReader(?????.Assets.Open(path.Substring(1)))

    seq {
        while not sr.EndOfStream do
            yield sr.ReadLine ()
    }
    #else
    File.ReadLines(path)
    #endif

编辑后移除了 F# 标签:尽管您的代码可能是用 F# 编写的,但除非 F# 在某种程度上与您的问题相关,否则最好不要在问题中标记 F# 标签。在这种情况下,无论您使用哪种语言编写,答案都将是相同的。 - rmunn
2个回答

0
你真正需要的是一个上下文(Context)。如果你的应用程序有一个Application类,你可以使用它的上下文来检索资产资源。
它应该看起来像这样:
public class App extends Application {
public static Context context;

@Override public void onCreate() {
    super.onCreate();
    context = getApplicationContext();
}
}

然后,您可以使用App.context获取资源/资产。


调用getApplicationContext()是多余的。这就是应用程序-它是应用程序上下文。只需存储此内容即可。 - Gabe Sechan
同样,要记住如果您使用自定义应用程序,您需要在清单文件中注册该事实。 - Gabe Sechan
不,这不属于任何应用程序或其他活动。 - mamcx

0
如何在没有 Activity 的情况下获取 Android 资源
尝试使用以下代码:
let sr = new StreamReader(Android.App.Application.Context.Assets.Open(path.Substring(1)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接