小编Khu*_*hah的帖子

如何在应用程序内部更改语言(Locale)后刷新活动

我的应用程序用户可以从应用程序的设置更改语言.是否可以更改应用程序内的语言而不影响一般语言设置? stackoverflow的这个问题对我来说非常有用,我已经尝试过了.更改语言后,新创建的活动将显示更改的新语言,但当前活动和以前创建的处于暂停状态的活动不会更新.如何更新活动?我也花了很多时间试图让偏好改变立即应用但没有成功.重新启动应用程序时,会再次创建所有活动,因此语言已正确更改.

android:configChanges="locale" 
Run Code Online (Sandbox Code Playgroud)

还在所有活动的清单中添加.并且还支持所有屏幕.目前我还没有在activity的onResume()方法中做过任何事情.有没有办法刷新或更新活动(没有完成并重新开始)?我在onResume()方法中遗漏了一些事情吗?

android

58
推荐指数
6
解决办法
10万
查看次数

如何可能Service无限运行并且还允许在android中绑定?

我想要一个可以在后台运行的服务,直到我停止,即使启动它的组件被销毁并且还允许绑定到活动.怎么可能?

根据android绑定服务文档 - 有三种创建绑定服务的方法

  1. 扩展Binder类.
  2. 使用Messenger.
  3. 使用AIDL.

我使用messenger创建了绑定服务(第二种方法).Activity在其onStart()方法中绑定到服务,并在其onStop()方法中取消绑定.双向消息传递(在活动和服务之间)正常工作.但问题是,当活动取消绑定服务时,服务就会被破坏.但我想要一个可以无限期运行的服务.

它可以作为Android 服务开发指南 - "尽管本文档通常分别讨论这两种类型的服务,但您的服务可以双向工作 - 它可以启动(无限期运行)并允许绑定.这只是一个问题,你是否实现一些回调方法:onStartCommand()允许组件启动它,onBind()允许绑定."

我还在服务中实现onStartCommand()方法并返回START_STICKY,但它永远不会被调用.查看dev指南中有界服务的生命周期回调,没有onStartCommand()回调方法.那么如何运行服务直到我们停止并允许绑定?

我在fedora 15 OS中使用eclipse平台.

任何帮助.....

java android android-service

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

在Android中完成启动后自动启动应用程序

我想在其设置中创建一个具有自动启动选项的应用程序.我在我的应用程序中创建了一个从PreferenceActivity派生的Settings活动,并为自动启动选项提供CheckBoxPreference.如果启用了自动启动选项,我的应用程序应在启动手机时启动.如果禁用了自动启动选项,则它不应在启动完成时启动.

为了实现这一点,我实现了BroadcastReceiver的派生类,它接收BOOT_COMPLETED意图,在AndroidManifest.xml中声明接收器,并在AndroidManifest.xml中授予权限.

在应用程序中,还有一个派生类的Application和启动服务也来自应用程序派生类的onCreate方法.如果我在AndroidManifest.xml中声明接收器,那么在启动我的应用程序的onCreate之后调用,然后调用BroadcastReceiver的onReceive方法.

现在的问题是,无论是启用还是禁用自动启动,我的应用程序每次启动都会启动.禁用自动启动时是否可以不启动应用程序?

android autostart broadcastreceiver android-intent

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

在 Android 10 以下没有互联网的情况下,Android 会自动与 WiFi 断开连接

正在开发一个 android 应用程序,我需要在其中以编程方式连接没有互联网的 WiFi 设备。这是一个代码:

    private void connectToWiFi(final String ssid, String password) {

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {

            WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkRequest.Builder request = new NetworkRequest.Builder();
            request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
            request.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // Internet not required

            ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {

                @Override
                public void onAvailable(Network network) {

                    String networkSSID = getNetworkSsid();

                    if (networkSSID.equals(ssid)) {
                        connectivityManager.bindProcessToNetwork(network);
                    }
                }

                @Override
                public void onUnavailable() {
                    super.onUnavailable();
                }

                @Override
                public void onLost(@NonNull Network network) {
                    super.onLost(network);
                }
            };
            connectivityManager.registerNetworkCallback(request.build(), …
Run Code Online (Sandbox Code Playgroud)

android wifi wifimanager android-wifi android-8.0-oreo

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

如何在Android中使用Camera2 API录制视频时以编程方式拍摄照片

我想在使用camera2 API录制视频时捕获图像.

有两个独立的演示.1. 捕获图像和2. 录制视频

我试图将它们组合成一个应用程序.但在很多事情上都很困惑.喜欢

  • CameraDevice是单个,表示连接到Android设备的单个摄像头.
  • 请求中需要不同的模板.对于图像:mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);和视频mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
  • 在createCaptureSession方法中,需要ImageReader的表面,并且需要视频MediaRecorder.

在图像和视频的createCaptureSession方法中需要CameraCaptureSession.StateCallback.

而camera2 API是新的.因此,Google上没有更多示例.

有人对此有任何想法吗?喜欢如何在Android中录制时捕捉照片?

video android image android-camera2

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

"testBuildType"可以在Android项目的build.gradle文件中有条件吗?

我有两种构建类型的应用程序:调试和发布.

我想对两种构建类型执行测试.

但目前只测试了一种Build Type.默认情况下,它是调试构建类型,但可以使用以下命令重新配置:android {... testBuildType"release"}

我想逐个执行connectedDebugAndroidTestconnectedReleaseAndroidTest而不更改gradle文件.

是否有可能使"testBuildType"成为条件?因此,根据gradle任务中的构建变量(connectedDebugAndroidTest和connectedReleaseAndroidTest),它将对该构建执行测试.

android gradle gradlew build.gradle android-gradle-plugin

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

原生联系人更改通知

每当添加或删除或更改联系人时,如何在我的应用程序中获得回调?是否有任何标准的广播意图,我可以为此注册BroadcastReceiver?

android android-contacts

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

如何将本地DTD文件的验证应用于java中的xml文件?

我需要解析一堆传入的XML文档,但它不包含DTD声明.目前我正在使用SAX Parser解析xml文档但没有DTD验证.现在我想应用DTD验证.DTD由我自己创建.如何使用自己创建的DTD(SAX解析器)验证XML文件?我找到了一些使用Transformer的教程,但都是针对DOM Parser的.

如何使用SAX Parser解析XML文件并应用DTD验证.任何帮助......

java xml android dtd saxparser

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

使用 Retrofit Android 对多个 API 进行常见成功/失败/错误处理的良好设计

我想以这样一种方式设计 API 调用,以便从一个地方轻松处理成功和失败响应(而不是为所有 API 编写相同的调用函数代码)

以下是我想考虑的场景。

  1. 在一个中心位置处理所有 API 的成功/失败和错误响应,如 4xx、5xx 等。
  2. 想要取消入队请求,并且如果请求已经发送,则在注销的情况下也停止处理响应(因为响应解析会修改应用程序的一些全局数据)
  3. 如果访问令牌已过期并且从云收到 401 响应,它应该获取新令牌,然后使用新令牌自动再次调用 API。

我目前的实现不满足上述要求。有没有办法使用 Retrofit 实现满足上述要求的 API 调用?请为我推荐一个好的设计。

这是我目前的实现:

  1. ApiInterface.java - 它是一个包含不同 API 调用定义的接口。
  2. ApiClient.java - 获取改造客户端对象以调用 API。
  3. ApiManager.java - 它具有调用 API 并解析其响应的方法。

接口接口.java

public interface ApiInterface {

    // Get Devices
    @GET("https://example-base-url.com" + "/devices")
    Call<ResponseBody> getDevices(@Header("Authorization) String token);

    // Other APIs......
}
Run Code Online (Sandbox Code Playgroud)

客户端程序

public class ApiClient {
    
    private static Retrofit retrofitClient = null;
    
    static Retrofit getClient(Context context) {

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .sslSocketFactory(sslContext.getSocketFactory(), systemDefaultTrustManager())
                    .connectTimeout(15, TimeUnit.SECONDS) …
Run Code Online (Sandbox Code Playgroud)

architecture performance android design-patterns retrofit

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

当tabwidget背景从代码中设置时,tabwidget中的tabwidget divder会消失吗?

tabWidget中的divider工作正常但是当tab小部件的背景设置为

tabHost.getTabWidget().getChildTabViewAt(tabId).setBackgroundResource(R.drawable.tab_indicator);
Run Code Online (Sandbox Code Playgroud)

问题是如何在设置背景后设置选项卡小部件中的分隔符,虽然我使用过

tabhost.getTabWidget().setDividerDrawable(R.drawable.tab_widget_divider);
Run Code Online (Sandbox Code Playgroud)

是不适用于多个选项卡.

android tabwidget divider android-tabhost

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