6

これが一般的でないことを願っていますが、Sony SmartWatch 用のアプリを開発しています。ヌルポインター例外を許可するなどの間違いを犯したときはいつでも。アプリを再起動できません。いつまでも潰れたままのような状態です。さらに悪いことに、アプリに関連する Logcat を介したメッセージの受信も停止します。アプリをアンインストールして再インストールすると、スマートフォンの SmartWatch アプリに表示されません。まるで登録しない。この時点でログ メッセージが表示されないため、トラブルシューティングが困難です。私にできる唯一のことは、アプリをアンインストールすることです。電話を再起動します。次に、アプリを再インストールします。その時点で正常に戻り、再びコードを書き始めることができます。それが私の質問につながります。コントロールを再登録するより良い方法はありますか? これはエンドユーザーにも起こりますか? アプリがクラッシュした場合、アンインストールする必要があります。

いくつかの詳細 (罪のない人を保護するために名前が変更されています):

ブロードキャスト レシーバーを作成し、メインフェストでこれらのブロードキャストをリッスンするように設定しました。

  <receiver android:name=".MyExtensionReceiver" >
        <intent-filter>
             <!-- Receiver intents -->
            <action android:name="com.sonyericsson.extras.liveware.aef.registration.EXTENSION_REGISTER_REQUEST" />
            <action android:name="com.sonyericsson.extras.liveware.aef.registration.ACCESSORY_CONNECTION" />

            <!-- Control intents -->
            <action android:name="com.sonyericsson.extras.aef.control.START" />
            <action android:name="com.sonyericsson.extras.aef.control.STOP" />
            <action android:name="com.sonyericsson.extras.aef.control.PAUSE" />
            <action android:name="com.sonyericsson.extras.aef.control.RESUME" />
            <action android:name="com.sonyericsson.extras.aef.control.ERROR" />
            <action android:name="com.sonyericsson.extras.aef.control.TOUCH_EVENT" />
            <action android:name="com.sonyericsson.extras.aef.control.SWIPE_EVENT" />

        </intent-filter>

MyExtensionReceiver のコード:

 public class MyExtensionReceiver extends BroadcastReceiver {


public MyExtensionReceiver() {
    super();
    Log.d("mytag", "MyExtensionReceiver Loaded");
    Dbg.setLogTag("mytag");
}

@Override
public void onReceive(Context context, Intent intent) {
    Log.d("mytag", "onReceive: " + intent.getAction());
    intent.setClass(context, MyExtensionReceiver.class);
    context.startService(intent);
}

}

アプリがクラッシュしても、onReceive が呼び出されたときにログ メッセージが表示されるはずです。EXTENSION_REGISTER_REQUEST ブロードキャストが送信されないようです。アンインストール、再起動、再インストールを何度も繰り返しています。最終的に、アプリは SmartConnect アプリによって検出されます。

4

2 に答える 2

0

BroadcastReceiverとは何の関係もないようです。使用しないと、同じ厄介な問題が発生します。アプリを無効化/有効化することも、SmartWatch 電話アプリを強制終了することもできないため (他に再起動する方法がないため)、正常に動作させるために電話を再起動する必要があります。

また、この件に関してソニーからの助けをいただければ幸いです。

于 2013-02-10T18:32:34.543 に答える
0

この問題に出くわし、灰色を与えました!! この問題を回避するには、文字列を使用して新しいインテントを作成し、コンテキストで起動します。

Intent intent = new Intent("MY.PACKAGE.NAME.MyExtensionReceiver");
context.startService(intent);
于 2013-10-10T22:22:46.980 に答える