我想在不打开默认消息应用程序的情况下向多个号码发送短信。 我尝试使用
react-native-sms-x
但它没有维护,我的项目只是停留在编译阶段。
我还使用了 react-native-sms
,但它打开了默认的消息应用程序,其中填充了一个用户号码和消息正文,并且还必须单击它的发送按钮。
import { Linking,Platform } from "react-native";
const url = (Platform.OS === 'android')
? 'sms:919999999999?body=your message'
: 'sms:919999999999'
Linking.canOpenURL(url).then(supported => {
if (!supported) {
console.log('Unsupported url: ' + url)
} else {
return Linking.openURL(url)
}
}).catch(err => console.error('An error occurred', err))
在React应用程序中进行了大量的研究和试验之后...... 我发现 this 库工作正常,并且达到了发送消息而无需进入默认消息环境的目标。
var phoneNumbers = {
"addressList": ["+911212121212", "+911212121212"]
};
var message = "This is automated test message"
SmsAndroid.autoSend(
phoneNumbers,
message,
(fail) => {
console.log('Failed with this error: ' + fail);
},
(success) => {
console.log('SMS sent successfully');
},
);
希望对您有帮助。别忘了点赞哦
从现在开始,我只使用 Android react-native-sms-android 这是我向多个用户发送短信的代码:
import Asms from "react-native-sms-android";
type Props = {};
export default class App extends Component<Props> {
constructor(Props) {
super(Props);
this.state = { FileNumbers: ['687867867867','8575774433'], Message:
"gjjgjgj" };
}
sendingSms = (Receivers, Messagex) => {
try {
Receivers.map(
async Numbers =>
await Asms.sms(Numbers, Messagex, "sendDirect", (err,message)
=> {
if (err) {
console.log(err);
} else {
console.log(message);
}
})
);
} catch (e) {
alert("" + e);
}
};
render() {
return (
<View style={styles.container}>
<TextInput
style={{
height: 40,
borderColor: "gray",
borderWidth: 1,
width: "90%"
}}
onChangeText={Message => this.setState({ Message })}
value={this.state.Message}
/>
<Button
title="SEND"
onPress={() =>
this.sendingSms(this.state.FileNumbers, this.state.Message)
}
/>
</View>
);
}
}
就我而言,我想发送
SMS through the app
与本机没有任何 NPM 库
我的 React Native 版本是
0.73.4
,我正在使用 kotlin
下
android/app/src/main/java/com/your_project_name
创建文件夹
smsSend(文件夹名称)
创建两个文件
a.
SmsModule.kt
b.
SmsModulePackage.kt
下
android/app/src/main/java/com/your_project_name/smsSend/SmsModule.kt
package com.your_project_name
import android.telephony.SmsManager
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
class SmsModule(reactContext: ReactApplicationContext) :
ReactContextBaseJavaModule(reactContext)
{
override fun getName(): String {
return "SmsModule"
}
@ReactMethod
fun sendSms(message: String, recipient: String, promise: Promise) {
try {
val smsManager = SmsManager.getDefault()
smsManager.sendTextMessage(recipient, null, message, null, null)
promise. Resolve("SMS send successful")
} catch (e: Exception) {
promise.reject("SMS_ERROR", e.message)
}
}
}
下
android/app/src/main/java/com/onestack/smsSend/SmsModulePackage.kt
package com.onestack
import com.facebook.react.ReactPackage
import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManager
class SmsModulePackage : ReactPackage {
override fun createNativeModules(reactContext: ReactApplicationContext):
List<NativeModule> {
return listOf(SmsModule(reactContext))
}
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
return emptyList()
}
}
app.js
const {SmsModule} = NativeModules;
-----------
const smsSend = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.SEND_SMS,
{
title: 'SMS Permission',
message: 'This app needs access to send SMS messages.',
buttonPositive: 'OK',
},
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log('SEND_SMS permission granted');
try {
const response = await SmsModule.sendSms(
'Bhai new send kr raha hu check kr',
'9811929305',
);
console.log('SMS sent:', response);
} catch (error) {
console.error('Error sending SMS:', error);
}
} else {
console.log('SEND_SMS permission denied');
}
} catch (err) {
console. Warn(err);
}
};