0

登録されたサービスを介して送信および受信 SMS の両方をキャプチャできるスクリプトを作成しました。このサービスは約 1 時間動作し、その後キャプチャが停止します。Android はバックグラウンドで実行されているプロセスとサービスを表示しますが、実際に予想されるキャプチャは、手動でアプリにアクセスすると、すべてが再び短時間再開されます。App に置いたコードは次のpause/iddleとおりです。

protected void onPause() {
    if(!TrackerService.isRunning){

        serviceIntent = new Intent(MainActivity.this, TrackerService.class);
        startService(serviceIntent);

        mServiceReceiver = new MyReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(TrackerService.mAction);
        registerReceiver(mServiceReceiver, intentFilter);


     }

    super.onPause();
}

私はすでにマニフェストにサービスを登録しています。ここに完全なマニフェストの詳細があります

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sentsms"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.READ_SMS"></uses-permission>
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.sentsms.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <service android:name=".TrackerService">
            <intent-filter android:priority="999" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter> 
         </service>




    </application>

</manifest>
4

2 に答える 2

1

コードでレシーバーを登録しているので、アプリがアンドロイドによって強制終了された後、登録が解除されると思います。むしろ、受信者をマニフェストに登録することをお勧めします。これで問題が解決することを願っています。

于 2013-06-09T07:12:00.557 に答える
0

いつか、システムがサービスを強制終了してから再起動すると思いますが、サービスのデフォルトフラグがSTART_STICKYであるため、再起動されたサービスは空のインテントを受け取ります

サービスフラグ

 @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        return START_REDELIVER_INTENT;
    }
于 2013-06-09T05:35:41.840 に答える