2

我正在构建一个简单的短信应用程序,我想在收到新短信时自动打开我的应用程序?有可能吗? 我为此使用广播接收器

我应该在清单中进行哪些更改?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.message"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MessageActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <receiver android:name=".SmsReceiver" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
    </activity>
    <activity android:name=".Reply" >
    </activity>
 </application>

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

</manifest>
4

3 回答 3

2

您应该将接收器从活动中移出,如下所示:

 <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MessageActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Reply" >
    </activity>
<receiver android:name=".SmsReceiver" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
 </application>
于 2012-08-12T10:51:10.927 回答
1

在 Android 3.0 及更高版本下,除非用户打开了您的应用程序,否则无法保证接收到您的广播。应用程序不必保持打开状态,只需启动一次即可。这是由一个标志 ( FLAG_EXCLUDE_STOPPED_PACKAGES ) 引起的,该标志现在是大多数系统广播的一部分,它表示广播不应启动已停止的应用程序。

于 2012-08-12T10:50:44.240 回答
0

这已经在How to make android launch an application on received specific sms中得到解答以保持简短:可以使用 BroadcastReceiver。

于 2012-08-12T10:50:55.807 回答