J'ai créé un projet où l'application peut recevoir des sms. Cela s'est bien passé mais quand j'ai essayé de l'implémenter dans mon projet principal "ça ne marcherait pas, j'essaye d'implémenter le broadcastreceiver sur mon fragment." J'ai essayé google et différents forums la plupart d'entre eux ont dit que c'était les permissions, est déjà réglé :(. espère vraiment que je peux obtenir un peu de clarté dans ce domaine.Sms broadcastreceiver ne fonctionne pas dans mon fragment
Mon journal d'erreur dit cela.
FATAL EXCEPTION: main
Process: c.timno.smsgsm20, PID: 23636
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.provider.Telephony.SMS_RECEIVED flg=0x8000010 (has extras) } in [email protected]
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:788)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at c.timno.smsgsm20.ThirdFragment.processReceive(ThirdFragment.java:75)
at c.timno.smsgsm20.ThirdFragment$1.onReceive(ThirdFragment.java:55)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:778)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
at dalvik.system.NativeStart.main(Native Method)
Mon manifeste Android
.<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="c.timno.smsgsm20">
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_SMS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_heicon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Splash"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/>
</activity>
<!--
ATTENTION: This was auto-generated to add Google Play services to your project for
App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information.
-->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"></activity>
</application>
</manifest>
Mon fragment
package c.timno.smsgsm20;
import android.app.Fragment;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by TimNo on 2016-09-09.
*/
public class ThirdFragment extends Fragment{
private View view ;
View myView;
BroadcastReceiver receiver=null;
@SuppressWarnings("ResourceType")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.third_layout, container, false);
return inflater.inflate(R.layout.third_layout, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
view = getActivity().findViewById(R.id.content_frame);
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arr0, Intent arr1) {
processReceive (arr0, arr1);
}
};
getActivity().registerReceiver(receiver,filter);
}
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(receiver);
}
public void processReceive (Context context, Intent intent){
Toast.makeText(context, "You got a message",Toast.LENGTH_LONG).show();
TextView lbs = (TextView)view.findViewById(R.id.textvview);
Bundle bundle = intent.getExtras();
Object[] objArr= (Object[])bundle.get("pdus");
String sms ="";
for (int i=0;i<objArr.length;i++){
SmsMessage smsMsg = SmsMessage.createFromPdu((byte[])objArr[i]);
String smsBody = smsMsg.getMessageBody();
String senderNumber = smsMsg.getDisplayOriginatingAddress();
sms +="From: " + senderNumber+"\nContent: "+smsBody+"\n";
}
lbs.setText(sms);
}
}
Merci à tous à l'avance!
'NullPointerException à ... (ThirdFragment.java:75)' -.. Regardez la ligne 75 dans votre 'ThirdFragment' classe Ressemble' view' est nulle –
je suppose que votre application reçoit SMS quand il est au premier plan, mais il soulève NPE quand il est hors de l'écran, n'est-ce pas? – nandsito