Это моя первая попытка сделать приложение для Android. Это простой прослушиватель SMS, который затем отображает SMS как тост.
public class SmsReciever extends BroadcastReceiver {
String msgBody = null;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals("android.provider.Telephony.SMS_RECIEVED")){
Bundle bundle = intent.getExtras();
SmsMessage[] msg = null;
String msg_from;
if(bundle != null)
{
try{
Object[] pdus = (Object[]) bundle.get("pdus");
msg = new SmsMessage[pdus.length];
for(int i=0;i<msg.length;i++)
{
msg[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
msg_from = msg[i].getOriginatingAddress();
msgBody += msg[i].getMessageBody();
}
}catch(Exception e)
{
Log.d("Exception caught",e.getMessage());
}
Toast.makeText(context, msgBody, Toast.LENGTH_SHORT).show();
}
}
}}
Я получаю следующую ошибку:
java.lang.RuntimeException: Unable to instantiate receiver com.example.droid.SmsReceiver: java.lang.ClassNotFoundException: com.example.droid.SmsReceiver
Уверяю вас, что SmsReciever.java находится в droid/src. Я провел целую ночь, исследуя эту проблему. Пожалуйста помоги.
РЕДАКТИРОВАТЬ: это XML-файл манифеста, который вы просили.
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" android:permission="android.permission.RECEIVE_SMS">
<activity
android:name=".JarvisActivity"
android:label="@string/title_activity_jarvis" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecureMessagesActivity" android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".SmsReceiver" android:exported="false" >
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
</manifest>
РЕДАКТИРОВАТЬ: я провел небольшое исследование и обнаружил, что в моем файле манифеста у меня есть тег активности, который указывает на SecureMessagesActivity. Но во всем моем проекте у меня нет активности с таким названием. Так в этом проблема?
РЕДАКТИРОВАТЬ: Хорошо, поэтому я удалил часть SecureMessageActivity из моего файла манифеста, и я думаю, что это устранило ошибку. Теперь я получаю это сообщение об отказе в разрешении:
Permission Denial: receiving Intent { act=android.provider.Telephony.SMS_RECEIVED flg=0x10 (has extras) } to net.learn2develop.SMSMessaging requires android.permission.RECEIVE_SMS due to sender com.android.phone (uid 1001)
Также я использовал активность net.learn2develop.SMSMessaging в попытке скопировать другой код для той же цели, но теперь я удалил весь проект и много раз очищал свой собственный проект. Тем не менее, эта активность продолжает появляться снова и снова. редактировать Блин, скоро я начну сначала... Спасибо за ваш вклад.