小编Aje*_*ett的帖子

Android 10 - 使用 PackageManager 安装新版本的 apk 而不是 Intents 并没有真正起作用

我的 apk 当前更新的方式是通过新的 apk 在旧的 apk 上安装自身(同时不覆盖本地数据库或设置)。

因此,由于 Android 10(API 29)ACTION_VIEW已被弃用,所以这不再有效:

Intent intent = new Intent(Intent.ACTION_VIEW);
//output file is the apk downloaded earlier
intent.setDataAndType(Uri.fromFile(outputFile), "application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

根据我在互联网上找到的不同答案,我需要开始使用 PackageInstaller。看看 Android 文档中的演示,我发现:

Intent intent = new Intent(PSMentorActivity.this,InstallApkSessionApi.class);
intent.putExtra("apkFile",outputFile);
this.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

其中 InstallApkSessionApi 包含一个按钮,按下该按钮应启动安装窗口:

PackageInstaller packageInstaller = getPackageManager().getPackageInstaller();
PackageInstaller.SessionParams params = new 
    PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
int sessionId = packageInstaller.createSession(params);
session = packageInstaller.openSession(sessionId);
addApkToInstallSession(file, session);
// Create an install status receiver.
Context context = InstallApkSessionApi.this;
Intent intent = new Intent(context, InstallApkSessionApi.class);
intent.setAction(PACKAGE_INSTALLED_ACTION);
PendingIntent pendingIntent = …
Run Code Online (Sandbox Code Playgroud)

java android android-intent android-10.0

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

改造多种响应类型

如何使用Retrofit2来解析这两种API响应?

好的响应(HTTP 200):

{
    "data": {
        "foo": "bar"
    }
}
Run Code Online (Sandbox Code Playgroud)

错误响应(HTTP 200):

{
    "error": {
        "foo": "bar"
    }
}
Run Code Online (Sandbox Code Playgroud)

我读过很多问题和教程,但我不知道该怎么做,我尝试过:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapterFactory(new ItemTypeAdapterFactory());
Gson gson = gsonBuilder.create();

final Retrofit retrofit = new Retrofit.Builder()
        .client(getOkHttpClient())
        .baseUrl(Constants.API_BASE_URL)
        .addConverterFactory(GsonConverterFactory.create(gson))
        .build();
Run Code Online (Sandbox Code Playgroud)

这是我的 ItemTypeAdapterFactory:

class ItemTypeAdapterFactory implements TypeAdapterFactory {

    public <T> TypeAdapter<T> create(final Gson gson, final TypeToken<T> type) {

        final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
        final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);

        return new TypeAdapter<T>() {

            public void write(JsonWriter out, T value) throws …
Run Code Online (Sandbox Code Playgroud)

java android json gson retrofit2

6
推荐指数
1
解决办法
6614
查看次数

锁定屏幕上的 BiometricPrompt 对话框

我正在尝试在我的 android 应用程序中实现指纹身份验证。
我正在使用这个库:https : //github.com/infinum/Android-Goldfinger,它使用 BiometricPrompt 并且效果很好。问题是我需要在锁定屏幕上显示的活动中使用它。特别是该活动正在使用这些标志:

window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
Run Code Online (Sandbox Code Playgroud)

当活动正常启动时(不是在锁屏上),指纹认证对话框会弹出并且运行良好。相反,当活动显示在锁定屏幕上时,指纹验证对话框不会出现。

我已经阅读了使用旧(和已弃用)API 的 FingerprintManager,我不想使用它。

有没有办法在 BiometricPrompt 对话框中应用这些标志?或者根本不允许在锁定屏幕上显示对话框?

android fingerprint android-biometric

5
推荐指数
0
解决办法
819
查看次数

为 fastlane 定义自定义 AndroidManifest 属性

我在build.gradle和上都有一个自定义变量AndroidManifest.xml

android {
   defaultConfig {
      manifestPlaceholders.myCustomProperty = "#"
   }
}
Run Code Online (Sandbox Code Playgroud)

<meta-data
   android:name="CUSTOM_PROPERTY"
   android:value="${myCustomProperty} />
Run Code Online (Sandbox Code Playgroud)

我想myCustomProperty在 Fastfile 中定义。以下均无效:

gradle(
    task: "assemble"
    ...
    properties {
        "manifestPlaceholders.myCustomProperty" => "Value 1",
        "myCustomProperty" => "Value 2",
        "android.defaultConfig.manifestPlaceholders.myCustomProperty" => "Value 3"
    }
)
Run Code Online (Sandbox Code Playgroud)

在应用程序中#使用时我总是得到myCustomProperty(在使用 Fastfile 构建它之后)。

android gradle fastlane

5
推荐指数
0
解决办法
260
查看次数

debug-apk 工作正常,但在主要活动中签署 apk 发布崩溃

调试 apk 运行良好,但发布签名的 apk 在主要活动中崩溃。我已经检查了所有内容,但我不知道问题出在哪里。[build.gradle][1]

   android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.newtrendsdeveloper.unorthodox"
            minSdkVersion 19
            targetSdkVersion 28
            versionCode 51
            versionName "4.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            vectorDrawables.useSupportLibrary = true
        }
        buildTypes {
            release {
                minifyEnabled true
                shrinkResources true
                proguardFiles 'proguard-rules.pro'
            }
            debug {}
        }

    flavorDimensions "color"
    productFlavors {
        blue {}
        green {
            applicationIdSuffix ".test"
            versionNameSuffix "\"4.0-Microsoft Windows [Version 10.0.17134.407]\n" +
                    "      (c) 2018 Microsoft Corporation. All rights reserved.\n" +
                    "      \n" +
                    "      C:\\Users\\HP\\Downloads\\Tusky-master\\Tusky-master\\app>\";" + getGitSha()
        }
    }

    lintOptions {
        disable 'MissingTranslation'
    } …
Run Code Online (Sandbox Code Playgroud)

debugging android apk android-studio

4
推荐指数
1
解决办法
1390
查看次数

在viewpager2中无限滚动

我们如何在 ViewPager2 中实现无限滚动

因为OnPageChangeListener()在这个寻呼机中没有。但是setPageTransformer()每当我们更改页面时,都会有Listener 获取回调。

因此,viewpager2 问题的任何解决方案

注意:我正在为 viewpager2 使用 recyclerview 适配器

java android android-viewpager2

4
推荐指数
2
解决办法
4661
查看次数

无法在 Android 10 (Q) 中使用 glide 从设备加载图像

Glide未加载从图库中选取的图像。尽管授予写入和读取权限,但它始终显示以下错误。

 java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_20200120103701_3365226945725752825.jpg: open failed: EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)

android kotlin android-glide

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

Kotlin 中硬关键字和软关键字的区别

Kotlin 中硬关键字和软关键字的主要区别是什么?这些与 java 编程语言有何不同。

android kotlin

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

桌面的 flutter 插件是否必须用特定于平台的语言编写(比如我们使用 C++ 的 windows 和我们使用 Swift 的 mac)

美好的一天。

我是扑扑和飞镖的新手,因此将不胜感激

我在 android 目录中有一个当前用 Java 编写的 flutter 插件。我希望相同的插件能够在 Windows 和 mac 等其他平台上运行。我是否必须用 C++ 为 windows 和 Swift 为 macos 重写这个插件,或者我可以使用这些目录中的 java 文件。

如果我可以使用相同的 Java 文件,有人可以让我知道如何将这些文件移动到其他目录,以及我需要为我的 Flutter 应用程序做什么才能为其他平台获取这些插件。

windows android dart flutter

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