标签: android-api-levels

如果我将minAPI设置为21,我是否需要AppCompat?

我决定为Android制作我的最低API版本21,但这是否意味着再也不使用AppCompat了?只需使用普通的Material Design /没有AppCompat/etc?

android android-appcompat android-api-levels

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

setAlpha无法在ViewGroup实例上运行

setAlphaViewGroupAPI级别14(ICS)-19(KitKat)中的实例没有影响,即使它是在API级别11中引入的.任何想法为什么?

我甚至尝试过使用支持库,但这也不起作用.

例:

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
ViewGroup view = (ViewGroup) layoutInflater.inflate(R.layout.my_layout, null);
view.setAlpha(0.5f);
Run Code Online (Sandbox Code Playgroud)

它适用于API级别21+,但不适用于API级别14-19.

PS,我还没有测试过以下API级别14.

android alpha viewgroup layout-inflater android-api-levels

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

在XML drawable中使用主题引用需要API级别21

有没有办法使以下代码与较低的API级别兼容:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="?android:attr/selectableItemBackground"/>

    <item android:gravity="bottom">
        <shape android:shape="rectangle">
            <size android:height="1px"/>
            <solid android:color="#ccc"/>
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

部分:android:drawable="?android:attr/selectableItemBackground"产生此消息:

在XML drawable中使用主题引用需要API级别21(当前最小值为15)

android android-theme xml-drawable android-api-levels

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

如何防止对象在 Retrofit2 的 API 调用上发送空字段

我面临改造对象字段的问题。例如:我有对象名称标准,它有20 个字段,不,我只想在 API 调用时发送前4 个字段,其余所有字段在 api 调用时都应该被忽略。

以下是我的对象:

public class Criteria {

@SerializedName("mlsp_id")
@Expose
private String mlspId;
@SerializedName("listing_key")
@Expose
private String listing_key;
@SerializedName("limit")
@Expose
private String limit;
@SerializedName("add_to_log")
@Expose
private Integer addToLog;
@SerializedName("location")
@Expose
private String location;
@SerializedName("property_type")
@Expose
private List<String> propertyType = null;
@SerializedName("price")
@Expose
private Price price;
@SerializedName("beds")
@Expose
private Beds beds;
@SerializedName("baths")
@Expose
private Baths baths;
@SerializedName("floor_area")
@Expose
private FloorArea floorArea;
@SerializedName("lot_size")
@Expose
private LotSize lotSize;
@SerializedName("year_built")
@Expose
private YearBuilt yearBuilt; …
Run Code Online (Sandbox Code Playgroud)

android android-studio retrofit android-api-levels retrofit2

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

为什么android活动操作栏标题是黑色的?

之前我用Android Studio做项目的时候,Activity操作栏标题默认是白色的。我创建了一个新项目,其设置与之前的项目(API 级别 11)相同,但活动标题颜色的默认颜色是黑色。我根本没有改变任何东西,这是一个新项目。我尝试使用样式但没有任何效果。

android styles android-activity android-api-levels

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

为什么android ndk独立工具链不支持带有api 19的arm64但android ndk cmake支持

我曾经构建过 api 级别 19 的 arm64-v8a 库,使用android.toolchain.cmakeAndroid NDK r16b 就像这样。

${CMAKE} \
        -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}                    \
        -DANDROID_NDK=$ANDROID_NDK_HOME                             \
        -DANDROID_ABI="arm64-v8a"                                   \
        -DANDROID_NATIVE_API_LEVEL="android-19"                     \
        -DANDROID_STL="c++_shared"                                  \
        -DANDROID_CPP_FEATURES="rtti exceptions"                    \
        ..
Run Code Online (Sandbox Code Playgroud)

现在我想打包我的 lib 使用conan,它交叉编译 android lib 使用独立工具链。似乎不可能用--arch arm64and制作独立的工具链--api 19,因为以下命令

./make_standalone_toolchain.py --arch=arm64 --api=19 --stl=libc++ --install-dir=./test
Run Code Online (Sandbox Code Playgroud)

将失败并显示错误消息:

19 小于 arm64 的最小平台 (21)

有没有什么办法解决这一问题?

cmake android-ndk arm64 android-api-levels conan

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

如何可靠地获取API Level&gt; = 26的屏幕解锁事件?

根据官方文档,只能从Android O(API 26)开始动态注册屏幕锁定/解锁事件的BroadcastReceiver(通过在Activity中调用registerReceiver)。在AndroidManifest.xml中注册这些事件不再起作用,因此,当应用程序不运行时(先前已被Android终止或被用户强制关闭),该应用程序将不再能够接收这些事件(ACTION_SCREEN_ON / ACTION_USER_PRESENT)。

帖子中也提到了同样的问题: Android-检测手机解锁事件,而不是屏幕显示

是否还有其他其他可靠且可行的方式来获取屏幕锁定/解锁事件?

通过在应用程序的AndroidManifest .xml文件中注册ACTION_USER_PRESENT,尝试隐式广播以接收屏幕锁定/解锁事件。但是根据文档,除了某些例外情况之外,不当广播都是行不通的。您必须在活动类中使用registerReceiver的动态注册来执行此操作。因此,如果该应用被Android操作系统杀死,或者被用户强行停止,则该应用不会收到屏幕锁定/解锁广播。

活动类动态广播接收机

 registerReceiver(new PhoneUnlockedReceiver(), 
                  new  IntentFilter("android.intent.action.USER_PRESENT"));

public class PhoneUnlockedReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {

            KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(
                    Context.KEYGUARD_SERVICE);
            if (keyguardManager.isKeyguardSecure()) {

                //phone was unlocked, add handling here          

            }
        }
}
Run Code Online (Sandbox Code Playgroud)

android android-api-levels

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

Android 11 JNI 禁用 fdsan

我有一个应用程序使用带有本机库的库,现在在 Android 11 中由于 fdsan 而崩溃。

我已经联系了库提供商,但他们不会提供解决此问题的新版本库,因此我需要能够以某种方式禁用 fdsan。

我认为解决方案是当我使用 Android 11 或更高版本时调用:

if(android_get_device_api_level()>=30)
     android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_WARN_ONCE);
Run Code Online (Sandbox Code Playgroud)

但由于错误,我无法编译:

使用未声明的标识符“android_fdsan_set_error_level”

因为这只是在 Android 10 (API 29) 中添加的

所以我的问题是如何在我的项目中调用这个函数?我正在为此创建一个特定的 cpp 文件和一个特定的库,所以我需要一些如何让这个库说明它仅适用于 Android 10 或更高版本。cpp 文件或 Android.mk 文件中是否有一些定义,我可以使用这些定义来编译这个特定的库,仅当我的应用程序启动时,我才会从 Android 11 或更高版本中的 Java 调用该库?

java-native-interface android android-api-levels

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

在较旧的 API 版本上使用已弃用的函数?

背景:我正在使用最低 API 级别 17 制作我的应用程序。

我正在寻找获取文件系统大小的方法,并看到了这一点:

http://developer.android.com/reference/android/os/StatFs.html

但是,许多较新的功能仅在 API 级别 18 向上可用,并且旧版本现已弃用。

我如何正确使用类似http://developer.android.com/reference/android/os/Build.VERSION.html 的东西说,“如果用户的 API 级别是 17,请使用这些函数的弃用版本,但如果API 级别为 18+,使用这些函数的较新版本”?我是否需要以某种方式使用弃用注释?

filesystems storage android android-file android-api-levels

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

如何将我的应用程序的目标API级别从23更改为26

我有一个问题,当我尝试将我的应用程序上传到谷歌播放控制台,它的API级别必须是26,我的应用程序只是开发了23版本,现在我不知道如何从23更改此API版本到26,使其工作没有错误.

请帮帮我!

api sdk android google-play-developer-api android-api-levels

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