您也可以从Web浏览器中运行您的应用程序:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
您可以通过NFC交易启动应用程序:
在mainfest中添加<uses-feature android:name="android.hardware.nfc" />
了解更多信息,请访问此处:LINK
您还可以注册接收器,并在收到包含秘密代码的短信时启动应用程序:
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
String text = smsMessage[0].getMessageBody();
if(text = "yoursecretcode") {
abortBroadcast();
}
}
所需权限:<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
您还可以注册接收器并在从选定电话号码接收通话时启动应用程序:
public class ServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyPhoneStateListener phoneListener=new MyPhoneStateListener();
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
}
}
public class MyPhoneStateListener extends PhoneStateListener {
public void onCallStateChanged(int state,String incomingNumber){
switch(state){
case TelephonyManager.CALL_STATE_RINGING:
String numer = TelephonyManager.EXTRA_INCOMING_NUMBER;
break;
}
}
}
您需要获取 READ_PHONE_STATE
权限。
您也可以使用 shell(手机必须已经 root)来完成这个操作:
例如:
Runtime.getRuntime().exec("su");
Runtime.getRuntime ().exec ("am start -n com.android.calculator2/.Calculator");
同事"Arpan"
写道:
倾斜您的手机并挥手(基本上使用接近传感器来启动应用程序的意图)
以下是代码示例:
public class SensorActivity extends Service implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mProximity;
@Override
public final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public final void onSensorChanged(SensorEvent event) {
float distance = event.values[0];
if(!ss())
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
}
private boolean ss() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.packagename.something.ActivityName".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
"Arpan"
也写道:
插入任何 USB 设备并在清单中放置一个意图过滤器(如果可用 USB 主机模式)。
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
}
您可以将此粘贴到计时器
中。
我编辑了Arpan的帖子,加入了有关Android®中手势搜索的链接。
您可以使用小部件启动应用程序(当用户单击此项时,应用程序将启动),
我给您小部件类代码片段,更多信息可以在这里找到:
package com.helloandroid.countdownexample;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
public class CountdownWidget extends AppWidgetProvider {
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
}
@Override
public void onClick() {
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
检查耳机是否插入
每当耳机被插入时,会触发一个意图(ACTION_HEADSET_PLUG
)。通过BroadcastReceiver
检查此意图,并启动Activity
。
IntentFilter f = new IntentFilter();
f.addAction(Intent.ACTION_HEADSET_PLUG);
registerReceiver(headsetPlugReceiver, f);
public BroadcastReceiver headsetPlugReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
};
在清单文件中:
<receiver android:name="activity.to.receive.headplug.event">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG" />
</intent-filter>
</receiver>