gpt4 book ai didi

Android BroadcastReceiver 适用于 MOTODEV 模拟器,但不适用于实际的摩托罗拉 i1 设备

转载 作者:搜寻专家 更新时间:2023-11-01 09:15:40 25 4
gpt4 key购买 nike

我有一个从 Nextel 为摩托罗拉 i1 开发的简单安卓应用程序 (API 1.5)。它通过 BroadcastReveiver 创建了一个简单的 SMS 监听器,当我测试它时它可以工作在 MOTODEV android studio 附带的 i1 模拟器上。

当我将它安装在实际设备上时,什么都没有...永远不会调用 onReceive。我可以通过调试跟踪看到这一点...

我尝试了一些其他接收器,即 Intent.ACTION_AIRPLANE_MODE_CHANGED看看这是否是 SMS 的特定问题,但同样的事情......适用于模拟器而不是设备。我在这里错过了什么?有什么想法吗?

代码如下:

package com.smsmanager;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

registerReceiver(br, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
}

private BroadcastReceiver br = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Hello SMS", Toast.LENGTH_LONG).show();

}
};

}

这是 list :

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0"
package="com.smsmanager" mlns:android="http://schemas.android.com/apk/res/android">

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

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".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>

<uses-sdk android:minSdkVersion="3" />
</manifest>

我开始认为这可能是由于摩托罗拉所做的更改!?

最佳答案

我在 Pragnesh Goyani 的帮助下解决了这个问题......

Motorola i1 unit from Nextel supports MMS as a transport even for Text messages. Thus, an incoming text message won't invoke SMS Broadcast intent. You may want to use "android.provider.Telephony.WAP_PUSH_RECEIVED" intent instead.

解决方法如下:

将以下代码放入您的 AndroidManifest.xml。

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

</intent-filter>
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
<data android:mimeType="application/vnd.wap.mms-message" />
</intent-filter>
</receiver>

关于Android BroadcastReceiver 适用于 MOTODEV 模拟器,但不适用于实际的摩托罗拉 i1 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com