如何使用我的自定义短信应用截取传入的短信?

时间:2016-05-14 17:16:28

标签: android broadcastreceiver sms

我几乎已经制作了我的短信应用程序,只剩下一个bug。当手机收到传入的短信时,它会以某种方式进入我的应用程序并默认为一个。我认为这个问题是在意图的行动,但改变它没有任何作用。问题是 - 如何拦截传入的短信并禁止默认应用程序执行相同的操作?

AndroidManifest:

<manifest package="lexzcq.com.smska"
          xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission
        android:name="android.permission.SET_PREFERRED_APPLICATIONS"
        tools:ignore="ProtectedPermissions"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTask"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter android:priority="999">
                <action android:name="android.intent.action.MAIN"/>

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

        <receiver
            android:name=".SmsReceiver"
            android:permission="android.permission.BROADCAST_SMS"
            >
            <intent-filter android:priority="999">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>

                <category android:name="android.intent.category.APP_MESSAGING"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>

        <activity android:name=".ChatWindow">
            <intent-filter>
                <action android:name="com.lexzcq.com.lexzcq.sms_receive_intent"/>
            </intent-filter>
        </activity>
        <application android:name=".MyApp">
        </application>
    </application>
</manifest>

SmsReceiver.class

public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive (Context context, Intent intent) {

*//here I handle sms from pdus*

            Intent broadcastIntent = new Intent ()
                    .putExtra ("address", address)
                    .putExtra ("body", body)
                    .setAction ("com.lexzcq.sms_receive_intent");

*//here I'm writing sms to database*

            context.sendBroadcast (broadcastIntent);

            abortBroadcast ();
        }
    }
}

如果需要 - 我可以提供MainActivity.class的广播接收器 附:最奇怪的部分 - 当我发送短信时,它以某种方式保存到默认应用程序但我没有用SMS_RECEIVED_ACTION广播它。

0 个答案:

没有答案