在按下电话开始按钮的Android中执行以下操作在技术上是否可行。让我们说用户的手机已关闭。当用户按下开启按钮时,会发生以下情况:
目前,我试图找到手机START BUTTON的 KeyCode 但无法在日志中获得任何回复。
import android.view.KeyEvent;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
Log.e("KeyCode", "KeyCode:" + keyCode);
Log.e("KeyEvent", "KeyEvent" + event);
return true;
}
期待以精确的技术细节提供可靠的答案。感谢
答案 0 :(得分: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" />
发送短信的逻辑
你可以这么做。这发送短信
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 :"));
注意:如果要在Activity中执行此操作,请在活动中注册广播接收器,并在活动销毁时取消注册。
答案 1 :(得分:3)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
// do watever you want here
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:1)
你在说
让我们说用户的手机已关闭。
所以我认为手机已完全关闭,你想在开机时做这些事情。我会创建一个接收器StartMyServiceAtBootReceiver。
public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
//Do whatever you want to do on boot.
}
}
}
并把它放在你的小生命中
receiver
android:name="yourpackage.StartMyServiceAtBootReceiver"
android:enabled="true"
android:exported="true"
android:label="StartMyServiceAtBootReceiver" >
<intent-filter android:priority="999" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
答案 3 :(得分:1)
您永远无法在应用程序中获得StartButton
个事件
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
}
因为android系统不会为我们发送此事件。但如果你的意图是在完成手机启动时做一些任务,你必须听取<action android:name="android.intent.action.BOOT_COMPLETED" />
Broadcast
&amp;注册必须通过AndroidManifest.xml
完成。
答案 4 :(得分:0)
这两个帖子提供了您需要的所有信息:
Listen to volume buttons in background service?
Detect on/off Key Press Android
基本上,您的应用程序需要运行才能检测关键事件。
KeyEvent.KEYCODE_POWER
是开/关按钮的键
答案 5 :(得分: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
答案 6 :(得分:0)
请看Dave Webb的答案:Broadcast reciever on shutdown
他写道:
您可以使用手机即将关机时广播的ACTION_SHUTDOWN意图。文档说:
应用程序通常不需要处理此问题,因为前景 活动也会暂停。
换句话说,如果您回复所有生命周期事件 适当的活动,除非你真的,否则没有必要使用它 想要做一些与关机相关的具体事情。
ACTION_SHUTDOWN Intent是在API Level 4中引入的 它只会在运行Android 1.6或更高版本的手机上发送。
您将使用BroadcastReceiver捕获广播。它看起来像这样:
public class ShutdownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Insert code here
}
}
您还需要在Manifest中输入以下内容:
<receiver android:name=".ShutdownReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
根据您正在做的事情,另一种选择是使用重启手机时发送的ACTION_BOOT_COMPLETED意图。
我希望它会有所帮助!