0

SMS の SQLite データベースを着信時に電話に保存できるアプリケーションを開発しようとしています。ブロードキャスト レシーバーを使用してメッセージを回復し、次にアクティビティ コンポーネントを使用してデータベースに挿入しています。しかし、アプリケーションがユーザーに迷惑をかけないように、アクティビティをサービスに置き換えます。誰かが私を助けたいですか.Hereは私のコードです://

MainActivity.java

    public class MainActivity extends BroadcastReceiver {

        private final String ACTION_RECEIVE_SMS = "android.provider.Telephony.SMS_RECEIVED";

        @Override

        public void onReceive(Context context, Intent intent) {

            if (intent.getAction().equals(ACTION_RECEIVE_SMS)) {

                Bundle bundle = intent.getExtras();

                if (bundle != null) {

                    Object[] pdus = (Object[]) bundle.get("pdus");

                    SmsMessage[] message = new SmsMessage[pdus.length];

                    for (int i = 0; i < pdus.length; i++) {

                        message[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    }

                    if (message.length > -1) {

                        String messageBody = message[0].getMessageBody();

                        String phoneNumber = message[0].getDisplayOriginatingAddress();

                        Toast.makeText(context, "Expediteur - numero :" + phoneNumber + " Sms : " + messageBody, Toast.LENGTH_SHORT).show();

                        Intent SecondeItent = new Intent(context, SmsActivity.class);

                        SecondeItent.putExtra("phoneNumber", phoneNumber);

                        SecondeItent.putExtra("messageBody", messageBody);

                        SecondeItent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                        context.startActivity(SecondeItent);

                    }
                }
            }
        }
    }

    public class SmsActivity extends Activity {

        smsdao.open();

        smsdao.insertSms(sms);

        Sms smsFromBdd = smsdao.getSmsWithNum(sms.getNum());

        if (smsFromBdd != null) {

            Toast.makeText(this, sms FromBdd.toString(), Toast.LENGTH_LONG).show();
        }

        smsdao.close();
    }
    }

その他のファイル: SmsDao.java、MyBaseSQLite.java、Sms.java および AndroidManifest.xml ですが、これらのファイルには問題はありません。

4

1 に答える 1

0

サンプルサービス

   public class MainService extends Service {

    public MainService() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub

            // your logic

        return super.onStartCommand(intent, flags, startId);
    }

}

サービスの呼び出し

Intent intent = new Intent(this, MainService.class);
    startService(intent);

マニフェスト

<service android:name="packageName.MainService" >
    </service>
于 2013-09-09T05:04:52.803 に答える