Ich habe eine Android-Anwendung, die ich brauche, SMS zu empfangen und ich fand eine gewisse Tutorial, das lehrt, wie das zu tun, aber wenn ich es & betreibe ich bekommen android Erlaubnis AusnahmeAndroid: java.lang.SecurityException: Permission Denial:
Schwerwiegende Ausnahme: main Prozess: androidreceivesms.javapapers.com.smsbroadcastreceiver, PID: java.lang.RuntimeException: Kann nicht Aktivität ComponentInfo starten {androidreceivesms.javapapers.com.smsbroadcastreceiver/androidreceivesms.javapapers.com .smsbroadcastceiver.SmsActivity}: java.lang.SecurityException: Berechtigungsverweigerung: Lesen com.android.providers.telephony.SmsProvider uri content: // sms/inbox von pid = 12206, uid = 10061 erfordert android.permission.READ_SMS oder grantUriPermission() bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2416) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) bei android.app.ActivityThread.-wrap11 (ActivityThread.java) unter android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java .lang.reflect.Method.invoke (Native Methode) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit .java: 616) Verursacht von: java.lang.SecurityException: Berechtigungsverweigerung: lesen com.android.providers.telephony.SmsProvider uri content: // sms/inbox von pid = 12206, uid = 10061 erfordert android.permiss ion.READ_SMS oder grantUriPermission() bei android.os.Parcel.readException (Parcel.java:1599) bei android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:183) bei android.database.DatabaseUtils .readExceptionFromParcel (DatabaseUtils.java:135) bei android.content.ContentProviderProxy.query (ContentProviderNative.java:421) bei android.content.ContentResolver.query (ContentResolver.java:491) bei android.content.ContentResolver. Abfrage (ContentResolver.java:434) bei androidreceivesms.javapapers.com.smsbroadcastreceiver.SmsActivity.refreshSmsInbox (SmsActivity.java:52) bei androidreceivesms.javapapers.com.smsbroadcastreceiver.SmsActivity.onCreate (SmsActivity.java:47) bei android.app.Activity.performCreate (Activity.java:6237) bei android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107) bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369) bei android.app.ActivityThread. handleLaunchActivity (ActivityThread).java: 2476) bei android.app.ActivityThread.-wrap11 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) bei android.os.Handler.dispatchMessage (Handler. java: 102) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (Native Methode) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 726) bei com.androi d.internal.os.ZygoteInit.main (ZygoteInit.java:616)
Hier ist meine AndroidManifest.xml Datei:
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".SmsActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".SmsBroadcastReceiver" android:exported="true" >
<intent-filter android:priority="999" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
Hier ist meine SmsActivity.java
public class SmsActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private static SmsActivity inst;
ArrayList<String> smsMessagesList = new ArrayList<String>();
ListView smsListView;
ArrayAdapter arrayAdapter;
public static SmsActivity instance() {
return inst;
}
@Override
public void onStart() {
super.onStart();
inst = this;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
smsListView = (ListView) findViewById(R.id.SMSList);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, smsMessagesList);
smsListView.setAdapter(arrayAdapter);
smsListView.setOnItemClickListener(this);
refreshSmsInbox();
}
public void refreshSmsInbox() {
ContentResolver contentResolver = getContentResolver();
Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);
int indexBody = smsInboxCursor.getColumnIndex("body");
int indexAddress = smsInboxCursor.getColumnIndex("address");
if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;
arrayAdapter.clear();
do {
String str = "SMS From: " + smsInboxCursor.getString(indexAddress) +
"\n" + smsInboxCursor.getString(indexBody) + "\n";
arrayAdapter.add(str);
} while (smsInboxCursor.moveToNext());
}
public void updateList(final String smsMessage) {
arrayAdapter.insert(smsMessage, 0);
arrayAdapter.notifyDataSetChanged();
}
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
try {
String[] smsMessages = smsMessagesList.get(pos).split("\n");
String address = smsMessages[0];
String smsMessage = "";
for (int i = 1; i < smsMessages.length; ++i) {
smsMessage += smsMessages[i];
}
String smsMessageStr = address + "\n";
smsMessageStr += smsMessage;
Toast.makeText(this, smsMessageStr, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Hier ist meine SmsBroadcastReceiver.java
public class SmsBroadcastReceiver extends BroadcastReceiver {
public static final String SMS_BUNDLE = "pdus";
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsBody = smsMessage.getMessageBody().toString();
String address = smsMessage.getOriginatingAddress();
smsMessageStr += "SMS From: " + address + "\n";
smsMessageStr += smsBody + "\n";
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();
//this will update the UI with message
SmsActivity inst = SmsActivity.instance();
inst.updateList(smsMessageStr);
}
}
}
Kann jemand bitte helfen Sie mir, weil ich jetzt für eine lange Zeit Stapel hier gewesen sein? Jede Hilfe wird dankbar sein, danke
führen Sie es auf Marshmallow? – Gautam
Wenn Sie unter KitKat ausgeführt werden, sind die Berechtigungsprobleme, auf die sich die Antworten beziehen, nicht das Problem. Sie gelten nur für Geräte mit Marshmallow. Sind Sie sicher, dass sich das Manifest im Ordner '/ src' befindet? –
Ich bin es auf Marshmallow, tut mir leid, ich habe nicht sorgfältig geprüft – Nyerere