标签: android-developer-api

DiffUtil.Callback 中 getChangePayload(int oldItemPosition, int newItemPosition) 的用法是什么

DiffUtil.Callback有方法

getChangePayload(int oldItemPosition, int newItemPosition)

当 areItemsTheSame(int, int) 对两个项目返回 true 且 areContentsTheSame(int, int) 对它们返回 false 时,DiffUtil 调用此方法来获取有关更改的有效负载。

例如,如果您将 DiffUtil 与 RecyclerView 结合使用,您可以返回项目中更改的特定字段,并且您的 ItemAnimator 可以使用该信息来运行正确的动画。

默认实现返回 null。

重写这个方法有什么好处?

我该如何使用它?

java android android-support-library android-developer-api

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

Android Q,以编程方式连接到不同的WiFi AP进行互联网连接

与Android Q中一样,几个WiFi API也受到限制。我正在尝试使用备用API连接到Internet的不同Wifi AP。

下面是我的代码:

    WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
    builder.setSsid("wifi-ap-ssid");
    builder.setWpa2Passphrase("wifi-ap-password");

    WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();

    NetworkRequest.Builder networkRequestBuilder1 = new NetworkRequest.Builder();
    networkRequestBuilder1.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
    networkRequestBuilder1.setNetworkSpecifier(wifiNetworkSpecifier);

    NetworkRequest nr = networkRequestBuilder1.build();
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    cm.requestNetwork(nr, callback);
Run Code Online (Sandbox Code Playgroud)

这使我可以连接,但互联网已禁用。这正在按照Android文档中的定义运行。

我尝试的替代方法如下:

    WifiNetworkSuggestion.Builder wifiNetworkSuggestionBuilder1 = new WifiNetworkSuggestion.Builder();
    wifiNetworkSuggestionBuilder1.setSsid("wifi-ap-ssid");
    wifiNetworkSuggestionBuilder1.setWpa2Passphrase("wifi-ap-password");
    WifiNetworkSuggestion wifiNetworkSuggestion = wifiNetworkSuggestionBuilder1.build();
    List<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(wifiNetworkSuggestion);
    wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    wifiManager.removeNetworkSuggestions(new ArrayList<WifiNetworkSuggestion>());
    wifiManager.addNetworkSuggestions(list);
Run Code Online (Sandbox Code Playgroud)

在清单中声明允许:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
Run Code Online (Sandbox Code Playgroud)

使用它并没有改变任何行为。

请告知API序列,以成功连接到具有Internet功能的其他Wifi AP。

android android-wifi android-developer-api android-connectivitymanager android-10.0

6
推荐指数
3
解决办法
1858
查看次数

Android Lollipop成为设备管理员不起作用

我正在按照本指南了解如何让我的应用请求成为设备管理员.
这适用于任何带有任何手机的任何4.x安卓版本,但不适用于棒棒糖(我已尝试使用Nexus 5和Nexus 7).

Logcat鞋出现以下错误:

 *11-02 07:37:09.649: W/DeviceAdminAdd(10020): Cannot start ADD_DEVICE_ADMIN as a new task*  
Run Code Online (Sandbox Code Playgroud)

还有其他人遇到过Lollipop这个问题吗?可能是什么原因?
我已经浏览了指南的所有部分,并确保我的XML,清单,接收器等都是应有的(并且,它确实适用于我尝试过的任何其他版本的操作系统或手机).

如果重要的话,出于兼容性原因,我正在使用目标API = 17和min API = 14编译我的应用程序.


添加清单文件:

<?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.package"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

     <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="com.mycompany.permission.NFProvider_WRITE" />
    <uses-permission android:name="com.mycompany.permission.NFProvider_READ" />
    <uses-permission android:name="android.permission.READ_LOGS" />

    <application
        android:name="com.mycompany.myapp.Application"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <receiver
            android:name="com.mycompany.myapp.NFAdminReceiver"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/admin"/>
            <intent-filter> …
Run Code Online (Sandbox Code Playgroud)

android device-admin android-developer-api android-5.0-lollipop

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

如何以编程方式在Managed Profile(Android 5.0)中启用非市场应用程序

你好,我正在检查Android 5.0样本,有样本BasicManagedProfile.使用它我已成功创建托管配置文件.但它只管理作为托管应用程序的Market应用程序(从Google Play下载).但我尝试使用自定义说它在市场上没有的HelloWOrld应用程序.它给了我错误" java.lang.IllegalArgumentException:只能通过这种方式启用系统应用程序."

 devicePolicyManager.enableSystemApp(
                        BasicDeviceAdminReceiver.getComponentName(activity), packageName);
Run Code Online (Sandbox Code Playgroud)

我用来启用应用程序的代码.是否有任何方法或API可以在托管配置文件中启用自定义应用程序.

device-policy-manager android-developer-api android-5.0-lollipop

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

Android:使用developer.android.com离线?

我住在伊朗,谷歌阻止伊朗的互联网用户访问一些像Android开发者网站这样的实用程序.每次我要使用这个网站时,我都必须设置代理,这会占用我的互联网连接的速度,并在其中进行大量的中断.有没有办法下载Android开发者网站以便离线使用它?任何提示或技巧将不胜感激.

android offline android-developer-api

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

Android:应用程序在调试过程中关闭

这是 Android Studio 设置的问题还是我不​​知道的其他问题?当我调试应用程序并在某个调试断点(断点不是每次关闭时都固定,它每次都不同)时,它会关闭应用程序并且从不显示在调试选择进程对话框中。要在调试过程中再次获得它,我需要再次运行该应用程序。

为什么这一切会发生,是否需要任何 Android Studio 设置来阻止这一切发生?

我的 Android Studio 版本是 2.2.1。任何帮助将不胜感激。

android android-debug android-studio android-developer-api

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

从Android Studio 3.0构建时如何克服app未安装的错误?

为了从Android Studio 3.0为调试Android应用程序提供构建,它不会安装在具有Marshmallow及更高版本的Mobile中(在未经测试的Lollipop中).我已经使用了Stack溢出的最大解决方案,但它无法正常工作.它始终显示App Not Installed.

android android-developer-api android-debugging

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

为什么要等待调试器然后附加调试器来处理?

有什么意义

android.os.Debug.waitForDebugger();
Run Code Online (Sandbox Code Playgroud)

我知道我们 [有时] 需要使用此函数来调试 a Service,但我的问题是:

  • 为什么我们必须这样做?
  • 为什么存在这种方法?它还有什么其他用途?
  • 将调试器附加到进程是什么意思,为什么我们必须这样做?为什么 aService必须以这种方式调试,而不是 an Activityor BroadcastReceiver

有人会认为在项目中调试任何类型的代码都很简单。除了它不是。Service反正不是为了。

这个特殊程序存在的原因是什么?它还有什么用途?

在此处输入图片说明

等待调试器连接。一旦调试器附加,它就会返回,所以如果你想立即开始跟踪,你需要在 waitForDebugger() 调用之后放置一个断点。

为什么仍然没有答案。

更新

我发现了此功能的一个用例:当应用程序进程终止后自动重启 Android 应用程序时。当用户在应用程序设置中切换运行时权限时,该进程将被终止。更一般地说,一个应用程序进程被杀死并重新启动,只要...

android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)

叫做。

要在进程重新启动后调试应用程序,请编写android.os.Debug.waitForDebugger()代码,然后将调试器附加到当前进程。

Android:如何调试应用程序的启动过程

这是此功能的一个用例。

参考资料

调试服务

在 Android Studio 中调试服务的正确方法?.

服务中的断点不起作用

如何调试 Android 后台服务?.

如何调试服务?.

如何附加调试器从第一行开始处理,而无需每次都编译代码

您可以在应用程序打开后附加调试器

可能相关

每次调试运行时禁用辅助功能服务

在 Intellij 中使用 Java 调试器时,“丢帧”是什么意思?

配置设备上的开发人员选项

测试您的服务

强制应用程序从第一个 …

android android-service android-testing android-debug android-developer-api

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

如何在 Android 上以编程方式启用/禁用热点或网络共享模式?

我在 Android 网站上看到许多关于本地唯一热点的参考

但是,我需要从后台服务以编程方式管理蜂窝热点,就像我可以从下拉菜单中手动执行的那样。

过去这样做是这样的:

method = wifiManager.getClass().getDeclaredMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
method.invoke(wifiManager, wifiConfiguration, activated);
Run Code Online (Sandbox Code Playgroud)

但此功能已被弃用。

我的无线提供商 (AT&T) 试图根据连接的设备和连接方式向我收取不同的费用。网络应该与设备无关,并且只将我的数据包传输到目的地。我希望这没有关系,但我担心我们失去对设备的控制。

Android真的不提供简单的API调用来管理热点吗?

java android wifimanager android-wifi android-developer-api

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

CameraX TimeoutException 无法完成 surfaceList

我正在使用该库的 1.1.0 版本浏览Android 开发人员https://developer.android.com/codelabs/camerax-getting-started#3上的 CameraX 教程。日志一开始看起来不错,但后来引发了 TimeoutException 并且相机预览保持黑色:

(omitted)
D/CameraStateRegistry: Recalculating open cameras:
Camera                                       State                 
-------------------------------------------------------------------
Camera@f35a3d7[id=0]                         OPEN                  
Camera@e46a673[id=1]                         UNKNOWN               
-------------------------------------------------------------------
Open count: 1 (Max allowed: 1)
D/CameraStateMachine: New public camera state CameraState{type=OPEN, error=null} from OPEN and null
D/CameraStateMachine: Publishing new public camera state CameraState{type=OPEN, error=null}
D/UseCaseAttachState: All use case: [androidx.camera.core.Preview-c7727ae2-d02c-4135-956c-a76c24deb02d40667318] for camera: 0
D/UseCaseAttachState: Active and attached use case: [androidx.camera.core.Preview-c7727ae2-d02c-4135-956c-a76c24deb02d40667318] for camera: 0
D/Camera2CameraImpl: {Camera@f35a3d7[id=0]} Transitioning camera internal state: OPENED --> OPENED
D/CameraStateMachine: New public camera state …
Run Code Online (Sandbox Code Playgroud)

android android-developer-api android-camerax

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