1

次のコードを使用して、Androidマニフェストファイルから開始するSMSレシーバーサービスを使用しています。問題は、アプリケーションが終了した後も機能し続けることです。このサービスがSMSを受信しないようにするにはどうすればよいですか?

サービス開始コード:

<receiver android:name=".dataAccess.SMSReceiver" android:enabled="true">
    <intent-filter >
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>
4

2 に答える 2

4

マニフェストで定義されたブロードキャスト レシーバーを使い続けたい場合でも、パッケージ マネージャーを使用して有効化/無効化できます。

ここをチェック

ComponentName receiver = new ComponentName(context, SMSReceiver.class);

PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver,
    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
    PackageManager.DONT_KILL_APP)
于 2012-12-17T19:21:50.173 に答える
1

続行する前に簡単に修正します。これは実際には Android Service ではなく、BroadcastReceiverです。

最も簡単な方法は、アプリケーションの一時停止/再開をリッスンし、そこで SMS レシーバーを登録/登録解除することです。Wi-Fi Direct チュートリアルのサンプル スニペットを次に示します。

@Override
public void onResume() {
    super.onResume();
    receiver = new SMSReceiver(...);
    registerReceiver(receiver, intentFilter);
}

@Override
public void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}
于 2012-12-17T19:05:13.433 に答える