Android 6.0对WiFi行为进行了一些更改,它破坏了我的应用行为,无法找到解决方案.
基本上,对于Android 6.0,您不得修改或删除非应用程序创建的WifiConfiguration对象.这意味着我需要始终创建自己的WifiConfiguration对象.但是,如果用户或其他应用程序已经为特定AP创建了WifiConfiguration,则无法为该AP创建另一个AP.
wifiManager.addNetwork(wifiConfiguration)返回-1.这适用于所有以前的Android版本,但不适用于Android 6.0
所以我被困住了.这是Android的错误吗?我想如果他们为具有自己的WiFi接入点的自定义硬件开发应用程序,很多开发人员应该受此影响.
我正在尝试使用DefaultHttpClient并向HttpGetWeb服务发出请求.遗憾的是,Web服务URL包含非法字符,例如{(例如:domain.com/service/{username}).很明显,Web服务命名不是很好,但我无法改变它.
当我这样做时HttpGet(url),我知道我在网址中有一个非法字符(即{和}).如果我在此之前对URL进行编码,则没有错误,但请求会转到不同的URL.
网址虽然有非法字符,但可以在浏览器中使用,但HttpGet实现不允许我使用它.我应该做什么或使用什么来避免这个问题?
我正在试图弄清楚什么是访问多个Web服务的应用程序的最佳通用设计,并且具有显示信息的多个活动.
我实现最新Android应用程序的方式如下.我有一个IntentService接收来自活动的请求以从Web服务获取信息.我Service通过ResultReceiver关于请求的状态(已启动/错误/已完成)通知活动.在调用Web服务,获取结果(xml/json)并解析它之后,我将该信息放入ContentProvider(由sqlite数据库备份)并使用a ContentResolver来通知任何有关更改的活动.活动会收到有关更改的通知(一些使用ContentObserver和其他使用SimpleCursorAdapters并自动通知).
现在,我的方法存在问题:
IntentService为每个Web服务创建多个,但我不认为这是它的目的.我觉得我采用的方法对于这个特定的应用来说并不是最好的方法.它部分受到Google I/O应用程序的启发(我无法理解所有内容,例如更新的sqlite字段等).一种替代方法是在所有活动中使用AsyncTasks.但是,我可以在哪里存储信息以便从其他活动中访问?在列表中Application?id管理怎么样?
我真的对您的意见/想法/建议感兴趣,如何让我的下一个应用程序更好,更有效地工作.
使用自定义AsyncTaskLoader从Web服务下载数据时,如果我在加载过程中按HOME按钮然后再次进入应用程序,则不会调用onLoadFinished()方法.我的片段正在调用setRetainInstance(true),onActivityCreated()它也getLoaderManager.initLoader(0, null, this)使用相同的方法调用(如建议的那样).
在测试时,我看到当回到片段时onActivityCreated()没有被调用,所以这可能是为什么onLoadFinished()不调用.但是在哪里放这个initLoader()方法呢?我在几个地方读到它不应该被调用onResume().
那么,有什么想法吗?在我的应用程序中,我在各种屏幕中有很多加载器,我需要以优雅的方式解决这个问题.
我正在为API级别创建一个Android应用程序> = 7.一个屏幕通过ndk使用带有OpenGL ES 2.0的GLSurfaceView.如何检测opengl 2.0是否可用?我不能android:glEsVersion="0x00020000"在我的AndroidManifest.xml中使用,因为我必须支持API级别> = 7的所有手机.如果不支持2.0,我将显示静态屏幕.
我正在使用ndk附带的hello-gl2示例应用程序中的类似代码.在GL2JNIView中,当它设置Opengl上下文时,如果它没有找到合适的opengl配置(在我的情况下是一个需要opengl es 2.0的配置),它会抛出一个IllegalArgumentException("No configs match configSpec")并且应用程序崩溃.我找不到拦截该异常并在该屏幕上执行其他操作的方法.有任何想法吗?
我有一个有多个活动的应用程序.在其中一个,我设置了一个警报.我按下HOME按钮.触发警报时,会显示通知.点击通知时,我开始一个类似对话的活动(@android:style/Theme.Dialog).虽然我在桌面屏幕上,Android会打开我的上一个活动,然后在此基础上显示我的对话式活动.我只想在用户所在的任何地方展示我的对话活动.
有谁知道出了什么问题?
Intent notificationIntent = new Intent(this, NotificationActivity.class);
notificationIntent.putExtra(Constants.EXTRA_ALERT_MESSAGE, contentText);
PendingIntent contentIntent = PendingIntent.getActivity(this, Constants.PENDING_INTENT_REQ_DIALOG, notificationIntent, 0);
no.contentIntent = contentIntent;
Run Code Online (Sandbox Code Playgroud) 我想知道如何使用它CursorLoader来填充屏幕上的小部件.在线的所有示例仅用于使用适配器,这非常有用.我需要的是一种可靠的方法来从Cursor和UI线程更新我的屏幕中的视图,而不会因为StaleDataException或者光标被突然停用而崩溃.这是我目前的方法,但我仍然收到用户的一些崩溃报告.
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
CursorLoader loader = null;
switch (id) {
case LOADER_ID_DATA:
loader = new CursorLoader(...);
break;
}
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
handler.post(new Runnable() {
@Override
public void run() {
if (getActivity() == null)
return;
updateView(cursor);
}
});
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
}
Run Code Online (Sandbox Code Playgroud)
一种解决方案是直接在onLoadFinished中检索所有光标字段,并将它们全部传递给处理程序以填充UI线程上的窗口小部件.但这很难看,因为我可能在光标中有很多值.我很想找到一种可靠的无碰撞方式来处理这一切.
我想SyncAdapter在Wifi上运行我的唯一功能.在开始时onPerformSync,我可以检查是否存在wifi.如果不是,我想推迟它,直到有WIFI可用.
我知道,syncresult.delayUntil但这意味着同步适配器每隔x分钟无用地调用,尽管可以禁用wifi,例如整天.此外,delayUntil如果您triggerSync直接使用,我所阅读的内容并不适用.
这里最好的方法是什么?像Evernote这样的应用似乎只能在WIFI上同步这个选项.
我是使用Robotium在Android上测试的新手.在运行某些测试之前,我如何以编程方式卸载然后安装应用程序?
例如,为了让我测试登录活动,我需要确保不会从先前运行的应用程序中保存登录凭据.或者还有另一种方法吗?
我想反序列化一些JSON中的布尔值.问题是这些值可以是null,true,false,"true",false,"Y"或"N".
我已经创建了自己的布尔反序列化器
public class CustomBooleanDeserializer extends JsonDeserializer<Boolean> {
final protected Class<?> _valueClass = Boolean.class;
@Override
public Boolean deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException,
JsonProcessingException {
return _parseBooleanPrimitive2(jp, ctxt);
}
protected final boolean _parseBooleanPrimitive2(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
LogUtils.d("PARSE BOOLEAN");
JsonToken t = jp.getCurrentToken();
if (t == JsonToken.VALUE_TRUE) {
return true;
}
if (t == JsonToken.VALUE_FALSE) {
return false;
}
if (t == JsonToken.VALUE_NULL) {
return false;
}
if (t == JsonToken.VALUE_NUMBER_INT) {
return (jp.getIntValue() != 0);
} …Run Code Online (Sandbox Code Playgroud) 是否可以通过按我的按钮来Activity显示音量栏?音量条是当您按下硬件音量按钮之一时出现的视图。
是否有 API 函数可以执行此操作,或者我是否必须手动重新创建该视图?