我可以使用以下代码获得以dBm为单位的WiFi信号电平.
for (ScanResult result : wifiScanResultList) {
int signalLevel = result.level;
}
Run Code Online (Sandbox Code Playgroud)
它给出了负面价值.当我们看到默认的系统WiFi设置并点击连接的WiFi网络时,它会给出"好"或"坏"作为信号强度.我们可以将这些负值过滤为"良好"信号强度或"差"信号强度的范围是多少?
我正在阅读Android发布文档,他们说要从我的代码中删除所有日志调用.我e.printStackTrace()在我的代码中有一些调用,可以打印为我程序正常运行的一部分(即,如果文件还不存在).
我还应该删除这些电话吗?
我看到针对我发布的Android应用程序的Crittercism(崩溃报告服务)出现了一些错误.跟踪如下:
0 java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: dalvik.system.PathClassLoader@45908320
1 at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:211)
2 at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123)
3 at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82)
4 at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:462)
5 at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:416)
6 at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:115)
7 at org.joda.time.chrono.GregorianChronology.<clinit>(GregorianChronology.java:71)
8 at org.joda.time.chrono.ISOChronology.<clinit>(ISOChronology.java:66)
9 at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:61)
10 at org.joda.time.DateTime.<init>(DateTime.java:155)
Run Code Online (Sandbox Code Playgroud)
搜索显示这通常是一个编译问题(通常是Joda时间库没有添加到构建路径或其他东西),但那么为什么只有大约4个用户看到这个错误?
我唯一的猜测是有人试图反编译应用程序盗版它(它是一个相当受欢迎的付费应用程序),并在错误地重新编译时看到这个错误.在那种情况下,我很高兴他们看到错误,我不需要担心这一点.
另一个奇怪的事情是导致问题的代码被try/catch包围,它似乎没有抓住它:
try {
DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
return fmt.print(dt);
} catch (Exception e) {
//Report issue to Analytics service
}
Run Code Online (Sandbox Code Playgroud)
对我而言,这个错误似乎更不可能出现在Crittercism上,因为它应该被抓住了.有谁能解释一下?
我想ProgressDialog在Fragment课堂上展示一个.以下代码仅适用于Activity类,但不适用于Fragment.有人可以帮我这个,为什么这个ProgressDialog实现只是在一个Activity而不是一个Fragment?
private class ProcessUpdateProfile extends
AsyncTask<String, String, JSONObject> {
private ProgressDialog nDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
nDialog = new ProgressDialog(PFragment.this); //Here I get an error: The constructor ProgressDialog(PFragment) is undefined
nDialog.setMessage("Loading..");
nDialog.setTitle("Checking Network");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);
nDialog.show();
}
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序直接连接到充当接入点的硬件设备(无法访问互联网).
我无法连接,因为Android 5.0 automaticcaly切换到有效的互联网连接,所以如果我有数据连接(3G,4G,...)或预先配置的网络我无法连接到我的设备,因为它忽略了WiFi .
那么我如何强制Android使用我以编程方式激活的网络?
我只是使用:
wifiManager.enableNetwork(id, true))
Run Code Online (Sandbox Code Playgroud)
id我要连接的设备的网络在哪里.该true参数无用.
使用的建议解决方案ConnectivityManager.requestNetwork()无效.
我想警告用户,如果背压将完成堆栈上的最后一个活动,从而退出应用程序.我想在接下来的几秒钟内弹出一个小吐司并检测到第二次背压,然后才打电话finish().
我已经编写了背压检测编码onBackPressed(),但是我找不到一种明显的方法来查看背堆上剩下多少活动.
谢谢.
我正在按照此解决方案在我的字符串资源文件中使用enetities:
是否可以直接在Android资源XML文件中进行字符串替换?
我在资源树中使用外部文件:/res/raw/entities.dtd,其内容:
<!ENTITY ent_devicename "MyDeviceName">
Run Code Online (Sandbox Code Playgroud)
在string.xml资源文件中:
<!DOCTYPE resources [
<!ENTITY % ent_devicename SYSTEM "../raw/entities.dtd">
%ent_devicename;
]>
<resources>
<string name="name">The name is &ent_devicename;</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
实体"ent_devicename"已被引用,但未被声明.
如您所见,Android Studio可识别外部实体文件:
和实体:
有人能提供一个正确的例子来使事情有效吗?我的意思是一个完全可编译的Android Studio项目,在单独的文件中包含实体声明.
更新 好的,如果你更加关注这个w3schools链接:
https://www.w3schools.com/xml/xml_dtd_entities.asp
你看到了解决方案:
外部entities.dtd文件包含
<!ENTITY ent_devicename "MyDeviceName">
Run Code Online (Sandbox Code Playgroud)
那么新的字符串资源资源:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY ent_devicename SYSTEM "../raw/entities.dtd">
]>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="Typos">
<string name="ent_devicenamxxe2">&ent_devicename;</string>
Run Code Online (Sandbox Code Playgroud)
我改变了<!ENTITY % ent_devicename对<!ENTITY ent_devicename(不再%)我删除%ent_devicename;
现在它编译但是生成的APK似乎忽略了实体值(使用空字符串).所以问题没有解决!
让我知道!
xml dtd android-resources android-studio android-gradle-plugin
更新:问题出现在Android 3.1.1更新之后.
在APK生成过程完成后,Android Studio(Windows操作系统)会提出一个弹出窗口来定位或分析APK.
不幸的是,如果我点击定位,没有任何事情发生.
UPDATE
在APK Generetion对话框中,我指定目标路径,我的电脑上的文件夹:
在某些项目中,我使用gradle line bounche来重命名APK:
android.applicationVariants.all { variant ->
if (variant.buildType.name == BuilderConstants.RELEASE) {
variant.outputs.each { output ->
def padVersionCode = variant.versionCode.toString();
padVersionCode = padVersionCode.padLeft(5, '0')
def newApkName = "${output.baseName}_${padVersionCode}-${variant.versionName}"
newApkName = newApkName + ".apk"
output.outputFile = new File(output.outputFile.parent, newApkName)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看到APK已重命名并放置在预期的文件夹中,定位链接是唯一的数据不起作用.
我有一个Android项目,我正在尝试进入一个库.我在这段代码上抛出异常:
_buttonStart = (Button) findViewById(R.id.buttonStart);
Run Code Online (Sandbox Code Playgroud)
我得到的例外是:
java.lang.NoSuchFieldError: com.xxx.libraryname.R$id.buttonStart
Run Code Online (Sandbox Code Playgroud)
Android文档似乎明确表示该库应该能够访问这些资源:
"例如,库项目中的源代码可以通过其R类访问自己的资源."
当我查看图书馆时/gen/com.xxx.libraryname/R.java/R/id/,buttonStart就在那里.但是,当我查看主要项目时/gen/com.xxx.libraryname/R.java/R/id,事实并非如此.
我干净了.
我有一个线性布局,我设置为clikable + focus,但问题是点击时没有显示焦点.如何才能显示焦点.
继承我的代码
<LinearLayout
android:id="@+id/linear_tv_layout"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:clickable="true"
android:focusable="true"
android:paddingBottom="7px">
Run Code Online (Sandbox Code Playgroud) android ×9
android-wifi ×2
apk ×1
back ×1
button ×1
click ×1
connectivity ×1
crittercism ×1
dtd ×1
exception ×1
exit ×1
java ×1
jodatime ×1
logging ×1
production ×1
resources ×1
xml ×1