0

我想通过传入的短信启动一个活动。为此,我已经这样做了......

    public class ReceiveSMS extends BroadcastReceiver {

    Boolean SendSMS;
    String Mobileno;
    String VarMessageBody;

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
        String str = "";
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            for (int i = 0; i < msgs.length; i++) {
                msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                str += "SMS from " + msgs[i].getOriginatingAddress();
                Mobileno = msgs[i].getOriginatingAddress();
                str += " :";
                str += msgs[i].getMessageBody().toString();
                VarMessageBody = msgs[i].getMessageBody().toString();
                str += "\n";
                Mobileno = msgs[i].getOriginatingAddress();

            }
            if (VarMessageBody.startsWith("START")) {
                Intent intentHome = new Intent(context,SwitchBluetoothActivity.class);
                intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intentHome);

            }

        }

    }
}

我的 SwitchBluetoothActivity 类是这样的..

    public class SwitchBluetoothActivity extends Activity {
    private TextView tv;
    private ToggleButton tb;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv = (TextView) findViewById(R.id.bluetoothText);
        tb = (ToggleButton) findViewById(R.id.toggleButton);

        final BluetoothAdapter bta = BluetoothAdapter.getDefaultAdapter();

        if (bta == null) {
            tv.setText("Device does not support Bluetooth");
        }
        else if(bta.isEnabled()){
            tv.setText("Bluetooth is enabled");
            tb.setChecked(true);
        }
        else{
            tv.setText("Bluetooth is disabled");
            tb.setChecked(false);
        }

        tb.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
              if(bta.isEnabled()){
                    bta.disable();
                tv.setText("Bluetooth is disabled");
                }
                else{
                    bta.enable();
                tv.setText("Bluetooth is enabled");
                }
            }
        });
    }
}

我还在 AndroidManifest.xml 中添加了意图过滤器。但我的问题是。我无法开始这项活动。请给我建议我在哪里做错了。

这是我的清单文件

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxxxxx.smsServices"
    android:versionCode="1"
    android:versionName="1.0" >
    <activity android:name=".SwitchBluetoothActivity">

    </activity>
    <receiver android:name=".ReceiveSMS">
        <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </receiver>

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.BROADCAST_SMS"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
    </application>

</manifest>
4

1 回答 1

0

默认您的广播接收器没有任何优先级,因此默认活动启动。启动您的活动在清单中为您的接收器添加优先级

      <receiver android:name=".SmsReciever">
        <intent-filter android:priority="99999">
            <action android:name="android.provider.telephony.SMS_RECIEVED"></action>
        </intent-filter>
    </receiver>

您还必须在清单中添加此权限

      <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
于 2012-05-07T06:47:01.800 回答