微妙な試行錯誤

随分前にでっち上げた万歩計な実装を github の勉強も含めて育ててるんですが、全然動かない。
とりあえず昨晩時点で ContentProvider を手慣れたナニに書換えたのですが、よくよく動作を見てみるに、歩数計測な Service が起動していなかったりして。
で、なんとなく Service が動きはじめているようなので branch して

$ git checkout -b hoge

修正を反映させて commit 作成。

$ git add .
$ git commit -m 'temp commit'

そして肝心な修正のみを盛り込む branch を作成。

$ git checkout master
$ git checkout -b butFix-20130718

で、どうするか (何
とりあえずな対応の diff が以下。

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bd0f0c0..1bca0e5 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3,6 +3,12 @@
       package="jp.shuri.android.pedometer"
       android:versionCode="1"
       android:versionName="1.0">
+    
+    
+       <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
+       <uses-sdk android:targetSdkVersion="15" android:minSdkVersion="15"/>
+
+    
     <application android:icon="@drawable/icon" android:label="@string/app_name">
         <activity android:name=".MainActivity"
                   android:screenOrientation="landscape"
@@ -26,6 +32,12 @@
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="jp.shuri.android.pedometer" />
        </intent-filter>
+       <intent-filter>
+               <action android:name="android.intent.action.PACKAGE_ADDED" />
+               <action android:name="android.intent.action.PACKAGE_REPLACED" />
+               <data android:scheme="package" />
+       </intent-filter>
+       
        <!--
        <intent-filter>
                <action android:name="android.intent.action.SHUTDOWN" />
@@ -47,7 +59,4 @@
         android:authorities="jp.shuri.android.pedometer.PedometerProvider" />
 </application>
 
-
-<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
-<uses-sdk android:targetSdkVersion="15" android:minSdkVersion="15"/>
 </manifest> 
\ No newline at end of file
diff --git a/src/jp/shuri/android/pedometer/MainReceiver.java b/src/jp/shuri/android/pedometer/MainReceiver.java
index ed12648..532c68e 100644
--- a/src/jp/shuri/android/pedometer/MainReceiver.java
+++ b/src/jp/shuri/android/pedometer/MainReceiver.java
@@ -15,6 +15,7 @@ public class MainReceiver extends BroadcastReceiver {
         if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
         */
             Log.d(TAG, "BOOT_COMPLETED");
+            Log.d(TAG, "intent.getAction() : " + intent.getAction());
             Intent i = new Intent(context, MainService.class);
             context.startService(i);
             /*
diff --git a/src/jp/shuri/android/pedometer/MainService.java b/src/jp/shuri/android/pedometer/MainService.java
index 0f410b3..22cf64e 100644
--- a/src/jp/shuri/android/pedometer/MainService.java
+++ b/src/jp/shuri/android/pedometer/MainService.java
@@ -70,7 +70,7 @@ public class MainService extends Service implements SensorEventListener {
                Cursor mCursor =
             context.getContentResolver().query(Contract.Log.contentUri, null, Contract.Log.columns.get(2) + " = " + queryString, null, null);
 
-               if (mCursor == null) {
+               if (!mCursor.moveToFirst()) {
                        Log.d(TAG, "no records");
                        ContentValues initialValues = new ContentValues();
                initialValues.put(Contract.Log.columns.get(2), queryString);
@@ -119,11 +119,12 @@ public class MainService extends Service implements SensorEventListener {
                String queryString = getQueryString();
                Cursor mCursor =
             getApplicationContext().getContentResolver().query(Contract.Log.contentUri, null, Contract.Log.columns.get(2) + " = " + queryString, null, null);
-               if (mCursor == null) {
+               if (!mCursor.moveToFirst()) {
                        Log.d(TAG, "query returns no row");
                        count = 0;
                } else {
-            count = mCursor.getInt(mCursor.getColumnIndexOrThrow(Contract.Log.columns.get(1)));
+               count = Integer.parseInt(mCursor.getString(mCursor.getColumnIndexOrThrow(Contract.Log.columns.get(1))));
+//            count = mCursor.getInt(mCursor.getColumnIndexOrThrow(Contract.Log.columns.get(1)));
             Log.d(TAG, "count = " + count);
                }
                debugPrint();

とりあえず対処したのは三点。

  • Manifest で permission とか version なエントリを前に移動
  • Manifest における intent-filter の追加
  • Service でのデータの読み込みの方法

でも、微妙な例外が出てるんですが、これって Huawei 特有なのかどうか。