小编raj*_*ath的帖子

私人内容提供商有什么用?

Android Dev Guide

内容提供程序对于读取和写入应用程序专用但不共享的数据也很有用.

通常,内容提供商用于向不同的应用程序提供数据或在它们之间共享数据.我想知道私人提供商是否有任何用处并且不想分享它.如果没有提供直接访问数据库或文件系统的权限,是否有任何好处?

谢谢,拉贾斯

android data-storage android-contentprovider

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

Android Room数据库事务

使用Android中的新房间数据库,我需要有两个顺序操作需要进行:

removeRows(ids);
insertRows(ids);
Run Code Online (Sandbox Code Playgroud)

如果我运行它,我看到(在检查数据库时)有一些行丢失 - 我假设它们在插入后被删除.即 第一个操作与第二个操作并行运行.

如果我使用一个事务块,比如这个,那么一切都很好 - 第一个操作似乎在完成第二个之前完成:

roomDb.beginTransaction();
removeRows(ids);
roomDb.endTransaction();

insertRows(ids);
Run Code Online (Sandbox Code Playgroud)

如果我在中间睡觉,那也没关系:

removeRows(ids);
Thread.sleep(500);

insertRows(ids);
Run Code Online (Sandbox Code Playgroud)

Room似乎没有太多的文档,并且想知道我是否应该在完成顺序操作时使用上面的事务块,或者是否有更好的方法.

编辑:在@CommonsWare指出之后,@Query是异步的,@Insert而且@Delete是同步的.鉴于此,我如何获得删除行异步的查询:

@Query("DELETE from table WHERE id IN(:ids)")
int removeRows(List<Long> ids);
Run Code Online (Sandbox Code Playgroud)

根据我得到的构建输出Deletion methods must either return void or return int (the number of deleted rows),如果我尝试将返回类型包装在一个Flowable.

android transactions android-database android-room

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

隐藏"最近的应用列表"中的屏幕,但允许屏幕截图

由于显示敏感数据,我主要想在最近的应用列表中清空屏幕.为此,解决方案是使用:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
Run Code Online (Sandbox Code Playgroud)

但这也不允许截图,这是一个问题.

有没有办法在最近的应用程序列表中显示空白屏幕(或预定义的图像),同时仍然允许截图?

android screenshot android-recents

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

为androidTest定义buildConfigField

我定义特定字段中BuildConfig用于获取URL运行时.因此,对于每种构建类型,我使用不同的字符串:

    prod {
        buildConfigField "String", "BASE_URL", "\"abc.com\""
    }

    debug {
        buildConfigField "String", "BASE_URL", "\"efg.com\""
    }
Run Code Online (Sandbox Code Playgroud)

在运行android测试时是否可以定义不同的URL?我试过把这个设置放在下面sourceSets->androidTest,但它不被接受.

android gradle android-testing android-gradle-plugin gradle-plugin

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

具有动态适配器更改的MultiAutoCompleteTextView

我的MultiAutoCompleteTextViewActivity中有一个小部件,其中有一个ArrayAdapter<String>由基于Web的调用结果填充的小部件.当用户在textview中键入字符时,此适配器的列表应在后台更新.实现这个的最佳方法是什么?

我已经尝试使用AsyncTask在后台下载字符串列表,但是notifyDataSetChanged()从"非原始线程"调用.而且,这似乎有点迂回.

我遇到的另一个选项是Filterable可以使用,但我没有遇到任何简单的例子(AutoComplete4似乎有点矫枉过正)如何做到这一点.如果没有例子,有人可以对我需要的演员进行广泛的概述 - 过滤,过滤等.

这也是一个好方法吗?

谢谢,
拉贾斯

android backgroundworker autocompletetextview

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

禁用android ics中的屏幕截图

对于我们的某个安全应用,需要在Android ICS中禁用该应用的屏幕截图功能.这是否可以在非root设备上使用?
谢谢,
拉贾斯

security android screenshot android-4.0-ice-cream-sandwich

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

在自定义视图中重用 TextView 中的“inputType”属性

我试图在自定义视图中重用 TextView 中的“android:inputType”属性,但得到的错误是:

不允许使用字符串类型(在“inputType”处,值为“textMultiline”)。

我已参考/sf/answers/725313221/的解决方案

attr 文件包含:

<declare-styleable name="MyEditText">
    <attr name="android:inputType"/>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)

MyEditText.java 是:

int n = typedArray.getIndexCount();
for (int i = 0; i < n; i++) {
    int attr = typedArray.getIndex(i);

    switch (attr) {
        case R.styleable.MyEditText_android_inputType:
            inputTypes = typedArray.getInt(attr, EditorInfo.TYPE_NULL);
            break;

    }
}
Run Code Online (Sandbox Code Playgroud)

布局文件包含:

<com.example.MyEditText
  android:id="@+id/met"
  style="@style/MyStyle"
  android:layout_marginLeft="0dp"
  android:layout_marginRight="0dp"
  android:layout_marginTop="12dp"
  android:inputType="textMultiline" />
Run Code Online (Sandbox Code Playgroud)

我有什么办法可以解决这个问题吗?谢谢。

android textview android-custom-view android-edittext android-attributes

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

在Android中使用接口到命名空间常量

从我所读到的使用接口来定义常量通常在Java中被忽略,除非你打算通过类继承常量来实现接口.但我经常在Android程序中遇到这样的代码:

interface Tags {
    String BLOCK = "block";
    String TITLE = "title";
    String START = "start";
    String END = "end";
    String TYPE = "type";
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我喜欢能够像这样将常量组合成一个命名空间.所以我的问题是这样做有什么不利之处吗?我假设它可能不如使用静态最终字符串那样高效,因为编译器可以内联它们.

java android

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

从更改的framework.jar构建Android AOSP system.img

我正在尝试更改android.webkitandroid平台框架中的文件,然后使用

mmm frameworks/base
Run Code Online (Sandbox Code Playgroud)

将其构建到framework.jar文件中.

如何构建system.img文件以便链接此jar文件?而且,无需构建整个系统.

android build-process android-source

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

使用 RxJava 分叉任务并合并结果

我正在尝试执行以下操作:

                           A
                           |
                           |
                           V
                     Observable<B>
                           /\
                          /  \
                         /    \
                        V      V
            Observable<C>       Observable<D>
                        \      /
                         \    /
                          V  V
                      Observable<E>
Run Code Online (Sandbox Code Playgroud)
  1. 给定输入 [A],异步调用返回 [B]。
  2. 每个需要[B]的两个任务需要并行运行并分别返回[C]和[D]。
  3. 两个结果合并为 [E],然后显示在 UI 中。

我是 RxJava 的新手,遇到过 zip、merge 等,但并不真正了解此类问题需要哪些运算符。任何帮助将不胜感激。

附注。1) 虽然 [C] 和 [D] 都是必需的,但仍然可以仅使用其中之一创建 [E]。因此,如果其中一个(或两个)失败,此时最好有一个超时。
2)是否可以让它们在特定线程中运行——一个在计算()中,另一个在 io()中?

这是我目前拥有的概念性代码。我这样做是线性的:
A -> B -> C -> D -> E

    return a2b(a)
            .subscribeOn(Schedulers.io())
            .flatMap(this::b2c)
            .subscribeOn(Schedulers.computation())
            .map(this::c2d)
            .map(this::d2e)
            .cast(E.class)
            .startWith(e -> new E.loadingState());
Run Code Online (Sandbox Code Playgroud)

理想情况下,我应该在某处使用以下函数:

Observable<E> cd2e(C c, D d) {
    return Observable.just(new E());
}
Run Code Online (Sandbox Code Playgroud)

谢谢。

java concurrency rx-java rx-java2

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