Java Android:在后台运行时发送/接收短信

Java Android:在后台运行时发送/接收短信,java,android,mobile,permissions,sms,Java,Android,Mobile,Permissions,Sms,我的应用程序过去在后台运行时正常工作。当应用程序收到一条短信(本质上是一条离开的短信)时,它只向一个人发送一条短信 随着新的更新,他们删除了许可广播_短信,这是我认为是允许应用程序在后台运行 所以我的问题是,我需要我的应用程序在不显示时工作。换句话说,当我的应用程序打开并聚焦时,它目前可以按预期工作,但一旦用户最小化/将应用程序发送到后台,应用程序就不再工作 以下是my manifest.xml背后的代码: <?xml version="1.0" encoding="utf-8"?>

我的应用程序过去在后台运行时正常工作。当应用程序收到一条短信(本质上是一条离开的短信)时,它只向一个人发送一条短信

随着新的更新,他们删除了许可广播_短信,这是我认为是允许应用程序在后台运行

所以我的问题是,我需要我的应用程序在不显示时工作。换句话说,当我的应用程序打开并聚焦时,它目前可以按预期工作,但一旦用户最小化/将应用程序发送到后台,应用程序就不再工作

以下是my manifest.xml背后的代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.katianie.awayreply2"
    android:versionCode="2"
    android:versionName="2.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:persistent="true" >
        <activity
            android:name="com.katianie.awayreply2.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

正如我在对现已删除的问题的评论中所述,广播短信许可是不相关的。至于您发布的代码,您没有在清单中静态注册BroadcastReceiver,因此我不确定您的应用程序实际用于执行所述任务的可靠性。在这个网站上有很多关于如何在清单中注册你的接收者的例子,这样你的应用程序即使没有运行,也可以收到短信接收的通知。请咨询一下。你基本上已经得到了你所需要的一切;你只需要改变一些事情。我会用什么android.intent.action来完成你的建议?正在考虑消息传递类扩展BroadcastReceiver。请检查。该问题本身包含一个基本的短信与所述的接收器。忽略答案。
public void sendTextMessage(String phoneNo, String message)
{
    //Used to detect when the sent text message was/was not delivered.
    String actionStr = "android.provider.Telephony.SMS_DELIVERED";
    Intent theDeliveredIntent = new Intent(actionStr);
    PendingIntent deliveredPendingIntent = PendingIntent.getBroadcast(myMainActivity, 0, theDeliveredIntent, 0);
    SmsManager smsManager = SmsManager.getDefault();

    //When the SMS has been delivered, Notify the user with a simple toast.
    myMainActivity.registerReceiver(new BroadcastReceiver() 
    {
        //Called when the away message has gotten to the destination.
        @Override
        public void onReceive(Context arg0, Intent arg1) 
        {
            int resultCode = getResultCode();

            if(resultCode == Activity.RESULT_OK)
            {
                Toast.makeText(myMainActivity.getBaseContext(), "Away message delivered.", Toast.LENGTH_SHORT).show();
            }
            else if(resultCode == Activity.RESULT_CANCELED)
            {
                Toast.makeText(myMainActivity.getBaseContext(), "Away message could NOT be delivered.", Toast.LENGTH_SHORT).show();
            }

            myHasSentMessage = false;

        }
    }, new IntentFilter(actionStr));

    //Send the text message
    if(!myHasSentMessage)
    {
        smsManager.sendTextMessage(phoneNo, null, message, deliveredPendingIntent, null);
    }

}