c# - 这件事的背景是什么?
问题描述
我正在努力寻找调用这个函数的“上下文”值,比如
SetFile("Name", ???, 1, "Some text here")
我看过这里https://developer.android.com/reference/android/content/Context但似乎有很多可能性,我不清楚我应该使用哪一个以及如何使用。我不知道该填什么“???” 地方,有人可以帮我解决这个问题吗?
public void SetFile(string BroadCastName, Context Context, long? DirectoryId, string BaseContent)
{
if (!BroadCastName.Contains(".enc"))
BroadCastName = BroadCastName + ".enc";
if (DirectoryId == null)
DirectoryId = 2;
var File = Directories.Where(x => x.Id == DirectoryId).FirstOrDefault().File;
var Path = Directories.Where(x => x.Id == DirectoryId).FirstOrDefault().Path;
File FilesDir = new File(Path, "SDDnode");
FilesDir.Mkdir();
if (bool.Equals(FilesDir.CanWrite(), true)) {
File newFile = new File(FilesDir, BroadCastName);
try
{
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(Context.OpenFileOutput(BroadCastName, FileCreationMode.Private));
outputStreamWriter.Write(BaseContent);
outputStreamWriter.Flush();
outputStreamWriter.Close();
}
catch (IOException e)
{
#region
ledger._base.Errors.Add(new Error {
Message = "Something went wrong in generate file in Android",
Process = "sddnode_android.Base._system",
Sys_Message = e.Message,
Line = 115,
Priority = 1
});
#endregion
}
OutputStream os;
try
{
os = new FileOutputStream(newFile);
//target.compress(CompressFormat.PNG, 100, os);
os.Flush();
os.Close();
}
catch (FileNotFoundException e)
{
e.PrintStackTrace();
}
catch (IOException e)
{
e.PrintStackTrace();
}
}
解决方案
对于那段代码,真的没有办法找出那个上下文来自哪里,因为我们不知道它叫什么。
但是,由于方法的类型,最高可能性是活动上下文,尽管服务也可能。
但是,这真的没关系,因为在该方法中唯一使用 Context 是Context.OpenFileOutput(BroadCastName, FileCreationMode.Private)
,这是可以从任何地方使用上下文安全地完成的事情。
编辑:
要获取上下文,您可以简单地this
在 Activity 或 Service 中使用关键字。
因此,无论您想在哪里运行该方法,只需SetFile("test", MainActivity.this, 2, "");
使用您正在使用它的 Activity 或 Service 的类名调用 Replace MainActivity。
如果您在 Activity 或 Service 之外的其他地方使用它,请检查该组件是否具有getContext()
方法。
推荐阅读
- javascript - 你怎么计算这个
- php - 分页在 Wordpress 上不起作用。帖子不变
- optimization - JDK 11 有没有办法帮助我从 jar 文件中删除未使用的代码?
- opencv - 物体检测后的形状检测以获得精确的边界框
- azure-cosmosdb - 更改多区域写入的提要观察者
- c++ - C++ CreateDirectory() 不适用于 APPDATA
- clojure - clojure.java.io ClassNotFoundException
- javascript - 使用 axios 从 url 检索数据(抓取)
- r - 无法在 CentOS 7 R 4.0.1 上安装 Rstan 2.21 库
- python - 在两列中打印排序列表(来自字典)