3

電話のスタートボタンを押すと、Androidで次のことを行うことは技術的に実現可能ですか. ユーザーの電話がオフになっているとしましょう。ユーザーがオンボタンを押すと、次のことが起こります。

  1. SMSを送信
  2. メールを送る
  3. 電話をかける

現在、電話のスタート ボタンのKeyCodeを検索しようとしましたが、log cat で応答が得られません。

import android.view.KeyEvent;

        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {


            Log.e("KeyCode", "KeyCode:" + keyCode);
            Log.e("KeyEvent", "KeyEvent" + event);

            return true;

    }

正確な技術的詳細を含む信頼できる回答を楽しみにしています。ありがとう

4

7 に答える 7

6

ブロードキャスト レシーバーを AndroidManifest.xml に登録します。この受信機は、画面がオンになったときにブロードキャストします。これにより、アプリケーションのアクティビティが画面上にあるかどうかが実行されます。

AndroidManifest.xml

<receiver android:name=".MyBroadCastReciever">
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_ON"/>
    </intent-filter>
</receiver>

MyBroadCastReciever.java

public class MyBroadCastReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            Log.i("Check","Screen went ON");
            Toast.makeText(context, "screen ON",Toast.LENGTH_LONG).show();

            // Here you can write the logic of send SMS, Email, Make a call

        }
    }
}

アップデート

呼び出しを行うロジック

これは簡単に行うことができます。直接電話をかけます。

Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "Your Phone_number")); 
startActivity(callIntent);

この権限を AndroidManifest.xml に追加します

<uses-permission android:name="android.permission.CALL_PHONE" />

SMS を送信するロジック

これは簡単に行うことができます。これにより、SMS が送信されます

public void sendSMS() {
    String phoneNumber = "0123456789";
    String message = "Hello World!";

    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(phoneNumber, null, message, null, null);
}

この権限を AndroidManifest.xml に追加します

<uses-permission android:name="android.permission.SEND_SMS" />

電子メールを送信するロジック

ID でのユーザーの操作なしでここにメールを送信する場合は、PHP Web サービスを設計し、Android アプリケーションで Web サービスを呼び出します。

設定した電子メールからメールを送信する場合は、Intent.

Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremail@yahoo.com"});          
email.putExtra(Intent.EXTRA_SUBJECT, "subject");
email.putExtra(Intent.EXTRA_TEXT, "message");
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Choose an Email client :"));

注 : このアクションをアクティビティで実行する場合は、ブロードキャスト レシーバーをアクティビティに登録し、アクティビティが破棄されたら登録を解除します。

于 2014-01-19T20:29:53.113 に答える
3
 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
     {
    if (keyCode == KeyEvent.KEYCODE_BACK)
          {


     // do watever you want here

    }

    return super.onKeyDown(keyCode, event);
}
于 2014-01-10T10:36:00.447 に答える
1

StartButtonアプリケーションでイベントを取得することはできません

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
}

Android システムはこのイベントをディスパッチしないためです。しかし、あなたの意図が電話の起動の完了時に何らかのタスクを実行することである場合は、 を聞いて<action android:name="android.intent.action.BOOT_COMPLETED" /> Broadcast登録を行う必要がありますAndroidManifest.xml

于 2014-01-21T08:50:13.340 に答える
0

Dave Webb によるこの回答をご覧ください:シャットダウン時のブロードキャスト レシーバー

彼は書く:

電話がシャットダウンしようとしているときにブロードキャストされるACTION_SHUTDOWNインテントを使用できます。ドキュメントには次のように記載されています。

フォアグラウンド アクティビティも一時停止されるため、アプリは通常、これを処理する必要はありません。

つまり、Activity のすべてのライフサイクル イベントに適切に応答する場合、シャットダウンに関連する特定のことを本当に実行したい場合を除き、これを使用する必要はありません。

ACTION_SHUTDOWN インテントは API レベル 4 で導入されました。つまり、Android 1.6 以降を実行している電話でのみ送信されます。

BroadcastReceiver で Broadcast をトラップします。次のようになります。

public class ShutdownReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Insert code here
    }

}

次のようなマニフェストのエントリも必要です。

<receiver android:name=".ShutdownReceiver">   
    <intent-filter>
        <action android:name="android.intent.action.ACTION_SHUTDOWN" />
    </intent-filter> 
</receiver>

何をしているかに応じて、別のオプションは、電話の再起動時に送信されるACTION_BOOT_COMPLETEDインテントを使用することです。

それが役立つことを願っています!

于 2014-01-23T06:09:52.397 に答える
0

これらの 2 つの投稿には、必要なすべての情報が含まれています。

バックグラウンド サービスで音量ボタンを聞きますか?

オン/オフのキープレスの検出 Android

基本的に、重要なイベントを検出するには、アプリケーションを実行する必要があります。

KeyEvent.KEYCODE_POWERオン/オフボタンのキーです

于 2014-01-10T10:21:04.460 に答える
0

この方法でできると思います

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

        super.onKeyDown(keyCode, event);

        if (keyCode == KeyEvent.KEYCODE_POWER) {
              // Your code here
              return true;
        }

        return false;
    }

http://developer.android.com/reference/android/view/KeyEvent.htmlもご覧ください

于 2014-01-10T10:22:47.960 に答える