Ich habe ein Projekt erstellt, wo die App SMS empfangen kann. Es lief gut, aber als ich versuchte, es zu meinem Hauptprojekt zu implementieren, "würde es nicht funktionieren. Ich versuche, den Broadctreceiver zu meinem Fragment zu implementieren. Ich versuchte Google und verschiedene Foren die meisten von ihnen sagten, dass es die Berechtigungen waren, aber meins bereits gesetzt ist :(. hoffe wirklich, dass ich in dieser Klarheit bekommen.Sms broadcastreceiver funktioniert nicht in meinem Fragment
Mein Fehlerprotokoll dies sagt.
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)
Mein android-Manifest.
<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>
Mein 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);
}
}
Vielen Dank im Voraus!
'Nullpointer bei ... (ThirdFragment.java:75)' -.. Schauen Sie sich die Leitung 75 in Ihre 'ThirdFragment' Klasse Sieht aus wie' view' null ist –
ich nehme Ihre App SMS erhält wenn es im Vordergrund ist, aber NPE aufhebt, wenn es nicht auf dem Bildschirm ist, ist das richtig? – nandsito