0

バックグラウンドで実行されるスパイ アプリが必要なクライアントがあります。受信メッセージ、送信メッセージ、GPS 位置情報などを取得します。Activity のユーザー インターフェイスなしでサービスを開始できますか? 私が理解しているように、サービスと受信機が必要です。また、受信機を呼び出す必要があります。たとえば、バッテリーが少ない、バッテリーがOKであるとしましょう-いくつかの非常に頻繁にトリガーされるインテントです。これをエミュレーターでテストするにはどうすればよいですか?

とりあえず持ってるのはこれ

public class MyReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {

    if(intent.getAction() != null)
    {
        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) ||
            intent.getAction().equals(Intent.ACTION_USER_PRESENT))
        {
            context.startService(new Intent(context, MyService.class));
        }
    // TODO Auto-generated method stub

}

} }

受信機用と

public class MyService extends Service {

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

@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this,"Service created ...",Toast.LENGTH_LONG).show();


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

    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}


@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed ...",
Toast.LENGTH_LONG).show();

}

}

サービスのため。これをマニフェストに入れました

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.services"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="4"
    android:targetSdkVersion="4" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <service android:name=".MyService"></service>
    <receiver  android:name=".MyReceiver"></receiver>
</application>

私は良い方向に進んでいますか?

4

2 に答える 2

0

はいServiceユーザーの操作なしで開始できます。しかし、確かに、「サービスを開始する場所」でコードをトリガーするための何かが必要ですか?

Phone_state_changeこのために、非常に頻繁な意図を持つもう1つのBroadcastReceiverを使用することをお勧めします"Incoming_mesage" Time_tick。そのため、onReceiveメソッドが呼び出され、そこからサービスを開始できます。サービスがまだ正しく実行されていないかどうかを確認する必要がありますか?

を定義することをお勧めしますsticky BroadcastReceiveronReceive登録するとすぐに呼び出されるので、startここserviceからも。

それは私がしたことです、それがあなたのために働くことを願っています。出力を教えてください。

ハッピーコーディング。:)

于 2013-02-05T20:39:29.263 に答える
0

この回答には 2 つの部分があります。

Android 3.0より前で可能です

Android 2.3 までは、アプリはあらゆるイベントのブロードキャスト レシーバーを登録でき、それが発生したときにも起動されます。これは、ブート完了、画面のオン/オフ、基本的に何でもかまいません。

3.0以上ではできません

3.0 では、イベント ブロードキャストを受信するのに非常に役立つ条件が導入されました。イベントを受信するには、アプリが少なくとも1 回起動されている必要があります。ユーザーがアプリをインストールしても開かない場合、アプリでブロードキャスト用のレシーバーが定義されていても、ブロードキャストを受信することはありません。

また、アプリはユーザーまたはシステム自体によっていつでも強制停止される可能性があることに注意してください。さらに、ICS 以降を実行しているユーザーには、アプリを無効にするオプションがあります。これにより、手動で再度有効にしない限り、アプリがまったく実行されなくなります。これらの状況はどちらも制御できません。

誰にでもできるスパイ アプリを作成する唯一の方法は、それをデバイスの ROM に焼き込むことです。

于 2013-02-05T20:15:55.270 に答える