我很困惑.我正在尝试配置我的应用程序以响应SD卡变为可用/离线,但我的广播接收器永远不会被调用!
我可以看到正在播放的事件,以及其他应用响应:
08-21 23:43:04.405: DEBUG/Ringer(275): -- intent.getAction() =android.intent.action.MEDIA_MOUNTED
Run Code Online (Sandbox Code Playgroud)
而且我的清单有接收器声明:
<receiver android:name=".Test" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
我的接收器有一个onReceive方法:
public class Test extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("#########", "##############################################################");
Log.d("#########", "Obligitory snarky and/or funny logging comment...");
Log.d("#########", "##############################################################");
}
}
Run Code Online (Sandbox Code Playgroud)
然而,&^%$'的东西不会导致Test.onReceive()触发.有什么想法吗?
我写了一个很好的小Android应用程序来检查数据使用情况,不幸的是它很大程度上依赖于随Froyo(Android 2.2)引入的android.net.TrafficStats.
我正在尝试为我的非Froyo用户反向移植此类,我可以从Android源确定的是:
这是我的挑战......当我通过设备上的API调用TrafficStats时,我得到一个读数(例如1113853字节).当我打开这两个文件并检查它们的内容时,一个文件不存在而另一个文件是0个字节.
很明显我误解了TrafficStats正在做什么.任何人都可以阐明它是如何运作它的魔力?
谢谢您的帮助.
(这是我尝试将c文件移植到java)
package com.suttco.net;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import com.suttco.IOUtils;
import com.suttco.StringUtils;
import android.util.Log;
public class TrafficStatsFile {
private static final String mobileRxFile_1 = "/sys/class/net/rmnet0/statistics/rx_bytes";
private static final String mobileRxFile_2 = "/sys/class/net/ppp0/statistics/rx_bytes";
private static final String mobileTxFile_1 = "/sys/class/net/rmnet0/statistics/tx_bytes";
private static final String mobileTxFile_2 = "/sys/class/net/ppp0/statistics/tx_bytes";
private static final String LOGGING_TAG = TrafficStatsFile.class.getSimpleName();
public long getMobileRxBytes() {
return tryBoth(mobileRxFile_1, mobileRxFile_2);
}
public long getMobileTxBytes() {
return tryBoth(mobileTxFile_1, mobileTxFile_2); …
Run Code Online (Sandbox Code Playgroud) 我正在使用intent-filter来收听PHONE_STATE中的更改
<!-- Listen for phone status changes -->
<receiver android:name=".IncomingCallReciever">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
......并且可以轻松检测到来电
intent != null
&& intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)
&& intent.hasExtra(TelephonyManager.EXTRA_STATE)
&& intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)
Run Code Online (Sandbox Code Playgroud)
...但我怎样才能确定它是第1行还是第2行响铃?
我的应用程序只需在用户当前正在通话并且另一个呼叫进入时才需要做出反应.
由于我甚至不想开始进入的原因..我有一个看起来像下面的maven层次结构.简而言之,除了一个需要commonslang2的古老工件外,一切都需要commonslang3.
我们没有编译或运行时的问题,依赖项按预期工作.我们面临的挑战是发展时间.
我们希望确保团队中的每个人都使用commonslang3 API,但偶尔(因为古代工件和Eclipse自动建议),有人不小心使用了commonslang2 API.
通常,我们只会在POM中强制使用所需的版本,但是commonslang是一种特殊的雪花.comonslang2和commonslang3之间的包签名发生了变化,这意味着如果排除旧库,我们就会遇到编译失败.例如,
我的问题是,我如何配置maven/Eclipse,在编译期间根据需要使用commonlang2但不在Eclipse类autosuggest列表中填充它?我想要的最终状态是有人输入'stringuti'+ ctrl + space,他们看到的唯一选项是commonslang3.我知道每个开发人员都可以通过(Window-> Preferences-> Java-> Appearance-> Type Filters)删除单个类,但由于两个原因,这不是一个可行的解决方案:1)这是一个拥有频繁更改资源的大型团队. 2)我需要移除整个工件,就像数百个类一样.
示例树:
MyWar
-- MyModuleJar1
-- ...
-- MyModuleJar2
-- LibA
-- commonslang
-- ...
-- LibB
-- commonslang3
-- ...
-- LibC
-- commonslang3
-- ...
-- ...
Run Code Online (Sandbox Code Playgroud)