小编Kno*_*sos的帖子

Android HttpClient持久性cookie

更新:不应再向阅读此内容的任何人推荐此问题及其答案.Android不再推荐使用HttpClient(读取:弃用),而是推荐使用HttpUrlConnection.现在使用的库的一个很好的例子是RetrofitOkHttp.在此问题的上下文中,可以使用后续查询保存,存储和传递cookie.这不是透明处理的.使用OkHttp,您可以使用拦截器.

我有一个具有多个意图的Android应用程序.

第一个意图是登录表单,后续意图依赖于登录过程提供的cookie.

我遇到的问题是,cookie似乎并没有贯穿整个意图.我在每个意图中创建新的HttpClients(我最初尝试将Parcelable传输到每个意图,但效果不是很好).

有没有人有任何提示让饼干坚持意图?

java cookies android httpclient

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

使用JSON Iterator键入安全警告

我的问题来自从JSONObject获取Iterator.

最简单形式的代码生成错误:

String json = client.retrieveList();
JSONObject jsonList = new JSONObject(json);
Iterator<String> i = jsonList.keys();

while(i.hasNext())
{
    String next = i.next();
    JSONArray jsonArray = jsonList.getJSONArray(next);
    // Do stuff with jsonArray, example: jsonArray.getString(0), jsonArray.getString(1);
}
Run Code Online (Sandbox Code Playgroud)

确切的警告是:类型安全:Iterator类型的表达式需要未经检查的转换以符合Iterator

所以问题是如何根除这一警告?

非常感谢!

java android json

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

以编程方式关闭设备

我正在编写一个旨在在一个特定设备模型(运行基于Amlogic的固件的Android机顶设备)上运行的应用程序.我有两个root功能,我的应用程序使用固件证书签名.

我的应用程序是该设备的主要关注点,能够启动完全关闭电源会很有帮助.

我没有这个shutdown命令.我确实有这个reboot命令.

reboot -p没有帮助.它只是在保持通电状态时冻结设备.

PowerManager是更好的一步,但它将设备设置为睡眠模式,而不是完全关闭:

PowerManager pm = (PowerManager)getSystemService(Service.POWER_SERVICE);
pm.goToSleep(SystemClock.uptimeMillis());
Run Code Online (Sandbox Code Playgroud)

我对所有建议持开放态度 - 黑客或其他.Android的版本预计将继续保留4.2.2.


意图

此命令将导致设备重新启动.Intent.ACTION_SHUTDOWN似乎没有做任何事情.这个Intent可能只是报告关闭,而不是发起关闭吗?

Intent i = new Intent(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i);
Run Code Online (Sandbox Code Playgroud)

我最幸运的是要求Intent关闭:

Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", true);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

关机线程

那更接近了.绝对有趣.你能找到一个使用它的例子吗?

到目前为止,我已经想出了这个:

Class<?> sdClass = Class.forName("com.android.server.power.ShutdownThread");
Constructor<?> con = sdClass.getDeclaredConstructors()[0];
con.setAccessible(true);

for (Method m : sdClass.getDeclaredMethods()) {
    if (m.getName().matches("shutdown")) {
        m.setAccessible(true);
        m.invoke(sdClass, PlayerActivity.this, false);
    } else if (m.getName().matches("rebootOrShutdown")) {
        m.setAccessible(true);
        m.invoke(sdClass, …
Run Code Online (Sandbox Code Playgroud)

android

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

浮动动作按钮扩展

根据浮动操作按钮的新Android设计指南,将浮动操作按钮转换为工具栏应该是合理的.

是否有任何样本/示例来执行此类转换?

android android-animation floating-action-button

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

DownloadManager IllegalStateException在DIRECTORY_DOWNLOADS中创建下载

首先,关于这个问题有很多问题,但没有一个反映我的问题.我有例如读这个这个.

我遇到的问题是,在少数情况下,我的函数setDestinationInExternalPublicDir导致以下堆栈跟踪:

Fatal Exception: java.lang.RuntimeException: Unable to start receiver com.onlinetvrecorder.otrapp2.listeners.DownloadUpdateReceiver: java.lang.IllegalStateException: Unable to create directory: /mnt/sdcard/Download
       at android.app.ActivityThread.handleReceiver(ActivityThread.java:2274)
       at android.app.ActivityThread.access$1500(ActivityThread.java:131)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4791)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.IllegalStateException: Unable to create directory: /mnt/sdcard/Download
       at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:496)
       at com.myapp.Utils.download(SourceFile:752)
       at com.myapp.Receiver.onReceive(SourceFile:20)
       at android.app.ActivityThread.handleReceiver(ActivityThread.java:2267)
       at android.app.ActivityThread.access$1500(ActivityThread.java:131)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4791)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) …
Run Code Online (Sandbox Code Playgroud)

android android-download-manager

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

Android - Flash - 允许对等辅助网络的权限

我正在开发一个实现Flash Peer辅助网络的Android应用程序.

我有普通的Android控件和一个包含带嵌入式Flash播放器的HTML的WebView.

有时Flash播放器会请求许可(此后一切正常),有时它不会询问,而是会挂起.有没有办法可以强制Flash播放器请求权限?或者我可以将我的应用程序添加到Flash播放器每次接受的列表中?

例如,这是我需要定期弹出的框.

flash permissions android

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

数据存储·链接序列化器/默认值

核心问题是我想为子消息设置默认值。由于 proto3 不允许在 proto 文件中设置默认值。

示例 Protobuf

message Person {
  int32 age = 1;
  repeated Doggo doggos = 2;
}

message Doggo {
  int32 rating = 1;
}
Run Code Online (Sandbox Code Playgroud)

串行器示例

object PersonSerializer : Serializer<Person> {
    override val defaultValue: Person =
        Person.getDefaultInstance().toBuilder()
            .setAge(1)
            .build()

    override suspend fun readFrom(input: InputStream): Person {
        try {
            return Person.parseFrom(input)
        } catch (exception: InvalidProtocolBufferException) {
            throw CorruptionException("Cannot read proto.", exception)
        }
    }

    override suspend fun writeTo(t: Person, output: OutputStream) {
        t.writeTo(output)
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以将所有 Person 的默认年龄设置为 1。标准值为0。 …

android protobuf-java android-jetpack-datastore

6
推荐指数
0
解决办法
1304
查看次数

git分支的完整备份

从一台PC上的本地git存储库备份完整分支的最佳方法是将其添加到另一台PC上的本地git存储库。

如果远程git储存库服务器由于末端故障而脱机。

git

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

在列表适配器android中水平移动Edittext的焦点

在 ListView 适配器中显示 EditText 问题成为焦点:

在此输入图像描述

每个列表项都有三个EditText. 我想水平改变焦点。

我使用此代码成功地将焦点从第一个移动到第三个EditText

当我接下来按下软键盘时,问题就出现了。我想将焦点移至下一个列表行,first EditText。但是,当我使用下面给出的代码时,焦点首先切换到同一个列表EditText

holder.edtStock.setOnEditorActionListener(new OnEditorActionListener() {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            if(holder.edtStock.hasFocus())
                holder.edtOrderStock.requestFocus();

            return true;
        }
        return false;
    }
});

holder.edtOrderStock.setOnEditorActionListener(new OnEditorActionListener() {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            if(holder.edtOrderStock.hasFocus())
                holder.edtStock.requestFocus();
            return true;
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

我想实现这个目标:

在此输入图像描述

android focus android-edittext

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

在基于Android-Studio的项目中为AppEngine创建复合索引

我使用Android Studio创建了Android项目及其后端AppEngine端点对应项.我有一个数据存储区,我正在使用Objectify.系统工作得很好,直到我在查询中添加了一个过滤器(仅显示特定的给定电子邮件).

Query<Report> query = ofy().load().type(Report.class).filter("email", user.getEmail()).order("email").order("-when").limit(limit);
Run Code Online (Sandbox Code Playgroud)

这是POJO数据存储区实体:

@Entity
public class Report {
    @Id
    Long id;

    String who;

    @Index
    Date when;

    String what;

    @Index
    String email;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试测试时,我从Google API Explorer收到此类错误:

com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found.
The suggested index for this query is:
    <datastore-index kind=\"AccessReport\" ancestor=\"false\" source=\"manual\">
    <property name=\"email\" direction=\"asc\"/>
    <property name=\"when\" direction=\"desc\"/>
    </datastore-index>
Run Code Online (Sandbox Code Playgroud)

据我所知,我只需要创建一个复合索引,包括特定字段的电子邮件和时间,以及它们的特定排序方向.

但是,我找到的大多数文档都告诉我编辑datastore-indexes.xml.

App Engine预定义实体的每个属性的简单索引.App Engine应用程序可以在名为datastore-indexes.xml的索引配置文件中定义更多自定义索引,该文件在应用程序的/ war/WEB-INF/appengine生成的目录中生成.

不幸的是,这个文件似乎并不存在于我的项目中.

是否有人熟悉使用Android Studio时改变这种情况的方法?

google-app-engine objectify google-cloud-endpoints google-cloud-datastore android-studio

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