在带有 org.jetbrains.kotlin (1.8.0-Beta) 插件和 8.0.0-alpha09 gradle 插件的新版本 Android Studio (Flamingo | 2022.2.1 Canary 9) 中,新版本突然出现此错误:
构建类型“release”包含自定义 BuildConfig 字段,但该功能已禁用。
有办法让它消失吗?
假设您有这样的方法:
public boolean saveFile (Url url, String content) {
// save the file, this can be done a lot of different ways, but
// basically the point is...
return save_was_successful;
}
Run Code Online (Sandbox Code Playgroud)
在整个应用程序中,如果要将文件保存到外部存储,则执行以下操作:
if (saveFile(external_storage_url, "this is a test")) {
// yay, success!
} else { // notify the user something was wrong or handle the error }
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子,所以不要对我的情况大概阻塞UI,妥善处理异常,等等.如果你不喜欢的文件保存得到的,你能想象一个getContact()
或getPhoneState()
或什么的.重点是它是一个需要许可的操作,它返回一些值并在整个应用程序中使用它.
在Android <= Lollipop中,如果用户已经安装并同意授予android.permission.WRITE_EXTERNAL_STORAGE
或其他什么,那么一切都会好的.
但是在新的Marshmallow(API 23)运行时权限模型中,在将文件保存到外部存储之前,您应该(1)检查是否已授予权限. 如果没有,可能(2)显示请求的理由(如果系统认为这是一个好主意)与吐司或其他什么,以及(3)要求用户通过对话授予权限,然后基本上坐下来等待打回来...
(所以你的应用程序坐在那里,等待...)
(4)当用户最终响应对话框时,onRequestPermissionsResult() …
当我在Android Studio 2中运行应用程序时,我遇到了构建错误.当我使用早期版本的Android Studio时,这些错误并不存在.
Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.squareup.haha.guava.base.Joiner$1) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* …
Run Code Online (Sandbox Code Playgroud) 我正在使用Android应用程序,并且想生成和打印PDF。但是我遇到了麻烦。我需要生成PDF
80mm的width
,并且height
可能会有所不同。
我正在尝试:
public class PDFGenerator implements Runnable {
private Context ctx;
private View view;
private Intent mShareIntent;
private OutputStream os;
public PDFGenerator(Context ctx, View view) {
this.ctx = ctx;
this.view = view;
makeAndSharePDF();
}
public void makeAndSharePDF() {
new Thread(this).start();
}
@TargetApi(Build.VERSION_CODES.KITKAT)
public void run() {
PrintAttributes printAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.ISO_C7).
setResolution(new PrintAttributes.Resolution("zooey", ctx.PRINT_SERVICE, 500, 500)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PdfDocument document = new PrintedPdfDocument(ctx, printAttrs);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.getWidth(), view.getHeight(), 1).create();
PdfDocument.Page …
Run Code Online (Sandbox Code Playgroud) 抱歉,如果这是重复的,但我努力搜索,但没有发现这个问题被问到......
回到过去的 Android 时代,您可以将类似这样的内容添加到 WebView 的源 html 中:
<img src='file:///android_res/drawable/my.png'/>
Run Code Online (Sandbox Code Playgroud)
并且它会在 WebView 中正确显示 my.png。但是 - Android 现在支持(并且更喜欢我们使用)这些新奇的矢量绘图,并且 Android Studio 的Vector Asset Studio使从 SVG 文件或其他文件导入它们变得非常容易。
最棒的是,为了向后兼容,在构建过程中会自动生成各种 dpi/屏幕尺寸的 .png 文件,以支持旧设备。因此,如果您的目标是较旧的设备,则那里有 .png 图像。
如果我能联系到他们就好了。因为,据我所知,使用矢量图形确实会破坏file:///android_res/drawable/
img
WebView 中的这些链接。这很奇怪,因为正如我所说,如果只是查看的话,可以查看 .png 文件。
我想过一些方法来解决这个问题,但没有一个有效:
由于 .png 是动态生成的并包含在 .apk 中,我想也许我可以直接指向生成的文件之一,例如file:///android_res/drawable-hdpi-v4/my.png
. (我检查了 .apk 文件,其中之一就在那里......)但是没有这样的运气。破碎的图像。
好吧,我想——也许有一种方法可以让 WebView 直接显示矢量对象。也就是说,WebView 可能会识别一个<img src="file:///android_res/drawable/my_image.xml"/>
或类似的东西。我的意思是,Chrome 可以渲染 svg 对吗?也许它也支持 .xml 矢量格式。但这里也没有骰子。(即使它有效,它也不太可能支持旧的 pre-chromium webview 版本。)
我尝试的第三件事是仅包含一个 xxxhdpi 大小的 .png,res/drawable
以便 Web 视图能够找到它并希望显示它。不幸的是,这也不起作用。看来只要有一个 .xml 矢量/drawable …
android webview android-resources android-drawable android-vectordrawable
我收到以下错误:
06-09 06:56:24.675: E/AndroidRuntime(1629): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gauvion.simpleworkouttracker/com.myapp.MainActivity}: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
Logcat说它的原因是:
06-09 06:56:24.675: E/AndroidRuntime(1629): Caused by: java.lang.NullPointerException
06-09 06:56:24.675: E/AndroidRuntime(1629): at com.myapp.MainActivity.onCreate(MainActivity.java:26)
Run Code Online (Sandbox Code Playgroud)
以下是MainActivity的代码:
package com.myapp;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends ListActivity {
private DayDataSource datasource;
private SimpleCursorAdapter dataAdapter;
private Cursor cursor;
private boolean isEditing = false;
private Toast toast_deleted;
private String[] columns = new String[] { MySQLiteHelper.COLUMN_NAME, MySQLiteHelper.COLUMN_DAY };
private int[] to;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)