小编Jef*_*man的帖子

android appwidget不会从活动更新

我有一个简单的appwidget,我想在活动中发生动作时(在同一个应用程序中)更新它.在onUpdate()中,我立即更新小部件,工作正常.在我的活动中,我在appUidget中调用相同的静态更新方法,该方法在onUpdate()中调用以更新视图.小部件未更新.

我可以将代码直接跟踪到AppWidgetManager.updateAppWidget()方法中,这一切都很好,但是小部件不会更新.

我能看到的唯一可能的区别是,当从活动的上下文调用appwidget的onUpdate()方法的上下文时,传递给我的静态更新方法的上下文对象是不同的.但是,网上有很多这样的例子,所以我希望它能够起作用.

android android-appwidget

9
推荐指数
2
解决办法
6422
查看次数

android vcard字符串联系

我想知道是否有一种干净的方式导入vcard作为Android联系人.我有一个vcard解析器,但映射每个可能的vcard字段和字段类型将是一个痛苦的,容易出错的练习.有没有更好的办法?

一个Android联系人看起来像一个vcard,所以我怀疑他们内部使用vcards.但是,没有公共API.

android vcf-vcard android-contacts

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

测试远程端口是否正在使用中

我需要发现远程服务器上的开放端口.我想知道这是否可行.我在想我打开一个套接字,如果这个成功,就意味着它被使用了......否则,如果我得到一个异常,那么就不会使用它.

例如,

public boolean isActive() {
    Socket s = null;
    try {
        s = new Socket();
        s.setReuseAddress(true);
        SocketAddress sa = new InetSocketAddress(this.host, this.port);
        s.connect(sa, 3000);
        return true;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (s != null) {
            try {
                s.close();
            } catch (IOException e) {
            }
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这是一种可行的方法吗?

java sockets

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

编译后从字节代码中删除注释

我们正在使用一个包含使用JAXB注释注释的bean的库.我们使用这些类的方式取决于JAXB.换句话说,我们不需要JAXB,也不依赖于注释.

但是,由于注释存在,它们最终会被处理注释的其他类引用.这需要我在我们的应用程序中捆绑JAXB,这是不允许的,因为JAXB在javax.*包中(android不允许"核心库"包含在你的应用程序中).

所以,考虑到这一点,我正在寻找一种从编译的字节代码中删除注释的方法.我知道有用于操作字节代码的实用程序,但这对我来说是一个新的东西.任何帮助开始朝这个目的将不胜感激.

java android annotations bcel javassist

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

如何从URLConnection中删除标头

我正在谈论一个文件上传服务,它接受发布数据,而不是表单数据.默认情况下,java HttpURLConnectionContent-Type标头设置为application/x-www-form-urlencoded.如果我发布纯数据,这显然是错误的.

我(客户端)不知道内容类型.我根本不想设置Content-Type标头.该服务具有一个功能,它将猜测内容类型(基于文件名,从文件中读取一些数据等).

如何取消设置标题?没有删除标头,并将其设置为null不更改值并将其设置为空字符串会导致标头设置为没有值.

java post content-type urlconnection httpurlconnection

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

ConnectivityManager.requestNetwork() 未按预期工作

我正在尝试暂时强制设备使用移动数据。我在用ConnectivityManager.requestNetwork()

    NetworkRequest.Builder request = new NetworkRequest.Builder();
    request.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    request.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

    connectivityManager.requestNetwork(request.build(), newRequestTransportCallback(connectivityManager),
            (int) TimeUnit.SECONDS.toMillis(10));
Run Code Online (Sandbox Code Playgroud)

哪里newRequestTransportCallback()的回报,

new ConnectivityManager.NetworkCallback() {
            @Override
            public void onAvailable(Network network) {
                Log.d(TAG,"Network available: " + network + ", binding...");
                if (cm.bindProcessToNetwork(network)) {
                    Log.d(TAG,"Bind successful to network: " + network);
                } else {
                    Log.w(TAG,"Bind failed to network: " + network);
                }
            }

            @Override
            public void onUnavailable() {
                Log.w(TAG,"Network not available");
            }
        };
Run Code Online (Sandbox Code Playgroud)

我可以从我的日志语句中看到请求和绑定成功。但是,当我随后调用ConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)它时,它告诉我网络已断开连接(并且我尝试轮询以查看更新网络信息是否有延迟,但也没有成功)。

android android-networking android-connectivitymanager

8
推荐指数
0
解决办法
1503
查看次数

将主题应用于appwidget

我正在尝试为appwidget定义一个主题,并将其应用于应用程序级别.我有一个主题,如,

<style name="theme.dark"> 
  <item name="android"background">#000000</item> 
</style> 
Run Code Online (Sandbox Code Playgroud)

在我的清单中,我设置android:theme="@style/theme.dark"了应用程序.但是,当我运行appwidget时,它不会从样式中获取项目.我尝试style="@style/theme.dark"在我的视图布局中设置一个单独的元素,这确实有用......但这不是我想要的.我不想为我视图中的每个元素调出特定的style ="...".这一页,

http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

有一个很好的示例应用程序使用主题/样式,它的工作完美.唯一的区别是它是一个应用程序..它是在活动而不是应用程序上设置主题.

我还尝试在访问视图之前使用appwidget的onHandleUpdate()中的setTheme(...)以编程方式在Context对象上设置主题.这也不起作用.

有任何想法吗?谢谢.

android android-widget android-styles

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

安装MY应用程序时的android意图

我需要在安装应用程序时执行操作.我已经开始使用了

Intent.PACKAGE_ADDED
Run Code Online (Sandbox Code Playgroud)

但我没有收到正在安装的应用程序的意图.我想在第一次安装我的应用程序时运行代码.

用例是在线服务注册.我可以列出BOOT_COMPLETED,如果已经安装了应用程序就可以了,但我需要在用户首次安装应用程序时处理这种情况.

这篇文章, 您可以在Android上安装应用程序时运行意图或脚本吗?

建议收听TIMER_TICK并在第一次广播时执行注册并设置一个标志,以便在下一个TIMER_TICK时不执行它.这似乎有问题,因为无论你是否在接收器中做某事,你仍然每隔一分钟启动你的接收器并在此过程中耗尽电池.

有更好的解决方案吗?

android

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

Android coreLibraryDesugaringEnabled,连接测试崩溃并出现 NoSuchMethodError

我添加coreLibraryDesugaringEnabled到我们的应用程序中,它对于正常的应用程序运行来说工作得很好。

  compileOptions {
    coreLibraryDesugaringEnabled true
  }
Run Code Online (Sandbox Code Playgroud)

  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
Run Code Online (Sandbox Code Playgroud)

但是,当我运行连接测试时,它会崩溃,并且类上没有此类方法错误Stream

16:03:56.426 11998 12041 E AndroidRuntime: FATAL EXCEPTION: com....
16:03:56.426 11998 12041 E AndroidRuntime: Process: ...
16:03:56.426 11998 12041 E AndroidRuntime: java.lang.NoSuchMethodError: No static method e([Ljava/lang/Object;)Lj$/util/stream/Stream; in class Lj$/util/n; or its super classes (declaration of 'j$.util.n' appears in /data/app/com....-qU6nwXthxze4O_9rcf1hGg==/base.apk!classes2.dex)
16:03:56.426 11998 12041 E AndroidRuntime:  at j$.util.stream.Stream$-CC.of(:1000)
16:03:56.426 11998 12041 E AndroidRuntime:  at ...
Run Code Online (Sandbox Code Playgroud)

我发现一些模糊的参考,这可能是因为在调用Multidex.install?之前引用了该类。我首先将该类引用为静态初始化程序,因此可以很早就访问它。不确定这是否是转移注意力,但我想我会提一下。

如果有帮助,则使用AndroidJUnit4ClassRunner.

编辑:我发现了一个模糊的参考,只有一篇文章指出仪器测试不支持这一点:

请注意,在 Android Studio 4.0 中,不支持在仪器测试中使用这些库脱糖类型。

https://medium.com/androiddevelopers/support-for-newer-java-language-apis-bca79fc8ef65

但即使是谷歌关于该功能的嵌入式视频也没有提及这一点。也不确定 …

android android-testing jdk-desugaring

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

android长时间运行更新appwidget的操作

我有一个小部件,需要在onUpdate()中执行可能长时间运行的操作.只是直接执行操作导致ANR.为了解决这个问题,我的第一次尝试是在其中创建一个线程.我注意到在某些情况下小部件不会更新.我的猜测是,一旦onUpdate()退出,android可能会杀死进程以及未完成的线程.

我的下一次尝试是创建一个意向服务.小部件的onUpdate()只是启动intent服务,它直接完成工作并在完成后更新小部件.这很有用,但令我惊讶的是,onHandleIntent()似乎是单线程的.如果我有两个小部件,然后更新并启动意向服务,它们会按顺序更新...

两个小部件的情况并不重要,但我只是想知道这种模式的最佳实践.

为了解决这两个小部件的情况,每当点击其中任何一个时,我都会用相同的数据更新所有小部件实例.例如,我执行一次长时间运行的过程并将结果应用于所有小部件实例.在我的场景中这没关系,但对于许多小部件来说,重要的是不要这样做.

想法?

android android-appwidget

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