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