ユーザーの電話でSMSにアクセスするために、 funfフレームワークを使用しています。
フレームワークはいくつかのパッケージで構成されています。提供されているプローブはすべて、抽象クラスProbeを拡張します。
フレームワークを利用するために、私は次のクラスを作成しました。
package com.senseapp.dieselboris;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SenseAppV1Activity extends Activity {
private long p;
private String message;
private boolean r;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SMSmessage sp = new SMSmessage();
r = sp.isRunning();
sp.enable();
p = sp.getDefaultPeriod();
message = Boolean.toString(r);
TextView tv = new TextView(this);
tv.setText(message);
setContentView(tv);
}
}
クラスSMSProbeのメソッドは保護されていると宣言されているため、SMSmessageクラスを作成しました。
package com.senseapp.dieselboris;
import edu.mit.media.funf.probe.*;
import edu.mit.media.funf.probe.builtin.*;
import edu.mit.media.funf.probe.builtin.ProbeKeys.AndroidInternal.Sms;
public class SMSmessage extends SMSProbe {
protected String getDataName () {
return super.getDataName();
}
protected long getDefaultPeriod () {
return super.getDefaultPeriod();
}
protected String getDateColumnName () {
return super.getDateColumnName();
}
}
しかし、このコードを実行すると、プローブをオンにする必要があるときに失敗します。次のエラーを参照してください。
<small>
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.senseapp.dieselboris/com.senseapp.dieselboris.SenseAppV1Activity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
at android.app.ActivityThread.access$2300(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:271)
at edu.mit.media.funf.probe.Probe.sendProbeStatus(Probe.java:280)
at edu.mit.media.funf.probe.Probe.sendProbeStatus(Probe.java:227)
at edu.mit.media.funf.probe.Probe.enable(Probe.java:612)
at com.senseapp.dieselboris.SenseAppV1Activity.onCreate(SenseAppV1Activity.java:20)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
</small>
抽象クラスProbeのメソッドenable():
public final void enable() {
if (!enabled) {
Log.i(TAG, "Enabling probe: " + getClass().getName());
enabled = true;
running = false;
sendProbeStatus();
onEnable();
}
}
私は何を間違えますか?私のクラスSMSmessageは最終的にProbeから継承するので、これは有効だと思いました。
Funfの開発者の一人がこれを読んでくれることを願っています。
ありがとうございました。