为Telegram开发bot有没有办法获得用户时区?Message对象中的Date字段仅包含UNIX时间戳.我想创建机器人在订阅用户的固定时间发送一些消息.用户可以拥有不同的时区,我不想强迫用户在消息中明确地将他们的时区发送到机器人.
我正在尝试从设备库中获取图像,然后在另一个活动中显示它.我活动中的代码:
private void startGallery() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, REQ_OPEN_GALLERY)
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_OPEN_GALLERY && resultCode == Activity.RESULT_OK) {
Uri imageUri = data.getData()
// here I save image uri to pass to another activity
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在另一项活动中打开uri时,我得到了SecurityException.Docs表示,获得uri的许可将持续到收到它们的活动完成为止.所以当我的活动结束时,我没有读取文件的权限.
是否有某种方法可以延长uri的许可,允许其他活动通过此uri打开文件?或者唯一的方法是将图像复制到本地应用程序存储?
UPD:我的目标是将收到的uri保存在本地数据库中,并允许其他活动和服务读取此文件.
对于此代码
class Foo {
var name: String? = null
}
Run Code Online (Sandbox Code Playgroud)
kotlin 编译器生成:
private String name;
public final String getName() { ... }
public final void setName(String name) { ... }
Run Code Online (Sandbox Code Playgroud)
即使属性name没有自定义的 getter 或 setter。可以使用@JvmField注释删除多余的 get 和 set 方法。所以这段代码
class Foo {
@JvmField
var name: String? = null
}
Run Code Online (Sandbox Code Playgroud)
仅生成一个字段,无需其他方法。
public String name;
Run Code Online (Sandbox Code Playgroud)
但是有没有办法让 kotlin 编译器不为整个项目中的所有属性生成 getter 和 setter?不管它有没有注解。也许一些实验性的编译器标志?
我想要它,因为我有在 kotlin 上编写的 android 仪器测试。测试 apk 超过 65k 方法计数限制。大约 2k 个方法是生成 getter/setter 的。由于 android 构建系统中的一些错误,我无法使用 proguard …
我有一些尺寸未知的本地图片。格式为jpeg。该任务将调整其大小以适合最大尺寸1280x960,并保持原始宽高比,并以低内存消耗将其保存到新文件。我在Fresco lib中发现了一个非常有用的方法:JpegTranscoder.transcodeJpeg()操作流。它具有限制scaleNumerator下采样的参数。如何在没有将完整位图加载到内存中以计算scaleNumerator值的情况下使用Fresco获取原始位图大小?像Android BitmapFactory.Options类中的inJustDecodeBounds之类的东西