相关疑难解决方法(0)

android ActivityOptions.isReturning()NullPointerException

我有这种情况

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'boolean android.app.ActivityOptions.isReturning()'

我无法理解为什么EnterActivityOptions.isReturning()ActivityTransitionState中给我null?

android nullpointerexception

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

新@SystemApi注释的含义是什么,与@hide的区别是什么?

Android最近在其SDK源代码中引入了@SystemApi.看起来像之前的@hide注释一样有效,因为它们也被从SDK jar类中剥离.

应用程序是否有可能以与旧的@hide API不同的方式调用它们.

/**
 * Indicates an API is exposed for use by bundled system applications.
 * <p>
 * These APIs are not guaranteed to remain consistent release-to-release,
 * and are not for use by apps linking against the Android SDK.
 * </p><p>
 * This annotation should only appear on API that is already marked <pre>@hide</pre>.
 * </p>
 *
 * @hide
 */
Run Code Online (Sandbox Code Playgroud)

android annotations

15
推荐指数
2
解决办法
9777
查看次数

Androids ObjectAnimator.ofFloat无法正常工作

我在Android应用程序中使用了ObjectAnimator.ofFloat,它不能以相同的方式在每个设备上运行.

MainActivity(扩展活动):

Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startAnimation();
    }
});


public void startAnimation() {
    ImageView aniView = (ImageView) findViewById(R.id.imageView1);
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(aniView, "alpha", 0f);
    fadeOut.setDuration(2000);

    ObjectAnimator mover = ObjectAnimator.ofFloat(aniView, "translationX", -500f, 0f);
    mover.setInterpolator(new TimeInterpolator() {
        @Override
        public float getInterpolation(float input) {
            Log.v("MainActivity", "getInterpolation() " + String.format("%.4f", input));
            return input;
        }
    });
    mover.setDuration(2000);

    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(aniView, "alpha", 0f, 1f);
    fadeIn.setDuration(2000);

    AnimatorSet animatorSet = new AnimatorSet();

    animatorSet.play(mover).with(fadeIn).after(fadeOut);
    animatorSet.start();
}
Run Code Online (Sandbox Code Playgroud)

三星Galaxy S4(Android …

animation android android-animation

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

Android的@hide注释究竟做了什么?

Android中的许多内部API都已标记@hide.这到底是做什么的?

另一个答案是它只隐藏了Javadoc的方法,但你可以使用反射来访问它们.

这没有任何意义 - 如果它们只是从Javadoc隐藏,那么你肯定不需要反射来访问它们.事实上,我发现我没有.我仍然可以调用一些@hide方法(也许只是静态方法?),应用程序编译并运行正常,据我所知.我只是得到一个lint错误:

无法解决方法

请注意,上面的代码仍然编译好.

我不关心API被更改的可能性,所以我很高兴使用私有API,但有人可以解释这种行为吗?此外,如果有任何方法可以根据具体情况禁用lint,这将是有帮助的.

java android lint hide

10
推荐指数
2
解决办法
4604
查看次数

Android权限保护级别为18和50

当我在Nexus 7上对所有应用程序转储所有权限时,我获得了保护级别为0(正常),1(危险),2(签名)的权限(如预期).3(SIGNATURE_OR_SYSTEM)*下没有记录任何内容.

但是也有很多权限,其保护级别设置为'18',一些权限设置为'50'.

我找不到关于这些值代表什么的任何文档.有人知道吗?

*它没有记录3岁以下的任何东西.

这些是记录的:

android.permission.ACCESS_CACHE_FILESYSTEM - 18
android.permission.ACCESS_CHECKIN_PROPERTIES - 18
android.permission.ACCESS_DOWNLOAD_MANAGER - 18
android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED - 18
android.permission.ACCESS_MTP - 18
android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK - 18
android.permission.BACKUP - 18
android.permission.BIND_APPWIDGET - 18
android.permission.BIND_DIRECTORY_SEARCH - 18
android.permission.BIND_KEYGUARD_APPWIDGET - 18
android.permission.BIND_REMOTEVIEWS - 18
android.permission.BIND_WALLPAPER - 18
android.permission.CALL_PRIVILEGED - 18
android.permission.CHANGE_COMPONENT_ENABLED_STATE - 18
android.permission.CHANGE_CONFIGURATION - 18
android.permission.CONNECTIVITY_INTERNAL - 18
android.permission.CONTROL_LOCATION_UPDATES - 18
android.permission.CRYPT_KEEPER - 18
android.permission.DELETE_CACHE_FILES - 18
android.permission.DELETE_PACKAGES - 18
android.permission.DOWNLOAD_CACHE_NON_PURGEABLE - 18
android.permission.GLOBAL_SEARCH - 18
android.permission.INSTALL_LOCATION_PROVIDER - 18
android.permission.INSTALL_PACKAGES - 18
android.permission.MANAGE_USB - …
Run Code Online (Sandbox Code Playgroud)

java android

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

ViewRootImpl不在Android SDK中

只是玩了一下(我知道View.getRootView()),我手动上升到根,甚至更远.

...
View tv=(View)mv.getParent();
View uv=(View)tv.getParent();
...
Run Code Online (Sandbox Code Playgroud)

实际上我觉得有一点我会遇到一个NullPointerException,但我得到了

03-18 13:07:45.554 13568 13568 E AndroidRuntime: java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.View
Run Code Online (Sandbox Code Playgroud)

好的,很好,看起来也很合理.

我还不知道ViewRootImpl,所以我决定接受这个话题并稍微调查一下.

但是,当我这样做的时候

ViewRootImpl wv=(View)vv.getParent();
Run Code Online (Sandbox Code Playgroud)

我得到了(当之无愧)

[javac] /home/jagged/Downloads/android/motog/firsttry/src/tk/wellthen/main.java:285: cannot find symbol
[javac] symbol  : class ViewRootImpl
[javac] location: class tk.wellthen.main
[javac]     ViewRootImpl wv=(View)vv.getParent();
[javac]     ^
Run Code Online (Sandbox Code Playgroud)

来自编译器,但是,当我根据上面的logcat输出完全限定它时,我得到(几乎)相同的错误消息.(我甚至从logcat输出中复制粘贴它以避免拼写错误.)

不用说,试图import android.view.ViewRootImpl.出现了同样的消息,仅针对另一个源代码行.

此外,即使在整个API文档中使用一个单词,Google似乎也没有发现它有用.我认为它主要用于内部,但如果你问我,这是没有理由的.

ViewRootImplstackoverflow.com上有"138"命中(好吧,现在它应该至少为139),但在这种情况下它们完全不相关(如果我没有错过一些特别的东西).

我已经看了一些其他网站,并发现了这个源代码,但是我怀疑将它伪装到SDK中以便探索它会有用吗?

有什么建议吗?提前致谢

java android

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

缺少android方法:ScanRecord.parseFromBytes

我正在查看 android 22 的源代码,将我的代码更改为新的 BLE 扫描,并遇到了 ScanRecord 类。当我打开 ScanRecord 的源代码(sources/android-22/android/bluetooth/le/ScanRecord.java)时,我看到有一个函数 parseFromBytes:

/**
 * Parse scan record bytes to {@link ScanRecord}.
 * <p>
 * The format is defined in Bluetooth 4.1 specification, Volume 3, Part C, Section 11 and 18.
 * <p>
 * All numerical multi-byte entities and values shall use little-endian <strong>byte</strong>
 * order.
 *
 * @param scanRecord The scan record of Bluetooth LE advertisement and/or scan response.
 * @hide
 */
 public static ScanRecord parseFromBytes(byte[] scanRecord)
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试在我的代码中使用它,它就找不到该函数。此外,如果我在这里检查 API …

android bluetooth-lowenergy

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

javadoc @hide 无法工作

根据链接,我编写了以下代码:

/**
 * @hide
 * */
public void myMethod() {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

当我使用命令生成文档时:

$ javadoc -locale en_US -encoding UTF-8 -charset UTF-8 -d doc xxx.java
Run Code Online (Sandbox Code Playgroud)

医生仍然保留着该myMethod物品。那么如何隐藏呢myMethod?我错过了什么 ?

java javadoc

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

Android Studio:android.jar 缺少一些类

我收到“无法解析符号”错误,因为 android.jar 缺少一些类。例如:

import android.annotation.MainThread;
import android.annotation.WorkerThread;

import android.annotation.CallSuper;
import android.annotation.DrawableRes;
import android.annotation.IdRes;
import android.annotation.IntDef;
import android.annotation.LayoutRes;
import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.StyleRes;
import android.annotation.SystemApi;
Run Code Online (Sandbox Code Playgroud)

以及许多其他人。

这些类在sources/android-xx 中以.java 文件形式存在,但不在实际的.jar 文件中。

我究竟做错了什么?

java android android-studio

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

无法覆盖Kotlin中的Java函数

我目前正在使用Kotlin开发针对API 27的支持BLE的Android应用.

我试图覆盖其中的一个函数android.bluetooth.BluetoothGatt.可以覆盖许多回调以启用某些BLE事件的处理.

例如,我onConnectionStateChange()以下列方式覆盖:

private val bluetoothGattCallback = object : BluetoothGattCallback() {

    override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
        /* do stuff */
    }
Run Code Online (Sandbox Code Playgroud)

这很好用.

我的问题源于试图覆盖onConnectionUpdated().此回调的定义方式onConnectionStateChange()BLE API源中的定义相同,那么为什么我不能覆盖它呢?这就是我试图覆盖它的方式(仍在BluetoothGattCallback()对象中):

fun onConnectionUpdated(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
    /* do stuff */
}
Run Code Online (Sandbox Code Playgroud)

编辑:我忘了提到,当我添加override关键字时,它提供了错误消息:OnConnectionUpdated overrides nothing..

原谅我的天真,我不经常与Kotlin/Java合作,谢谢.

java android kotlin bluetooth-lowenergy

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

如何确定输入设备是外部的

我正在寻找一种方法来识别外部输入设备。

我注意到 [InputDevice] 类的 Android API 有一个名为 [isExternal] 的函数。但是当我尝试使用它时,它告诉我它无法解析方法。我查看了在线 API 参考并注意到该函数不存在。所以我想知道为什么API中的函数而不是在线参考中的函数。

参考:https : //developer.android.com/reference/android/view/InputDevice.html https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/InputDevice .java

android

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