Ich entwickle eine SMS-Blockier-App. Was gut zu Jelly-Bean funktioniert. Und es funktioniert nicht von Kitkat bis Marshmallow. Ich suchte auf Google und jeder, der empfahl, Erlaubnis vom Benutzer zu nehmen, um es Standard-Sms-Anwendung dieses Telefons zu machen, indem er verwendete.Android - wie ich meine App Standard-SMS-App programmgesteuert machen
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if(!Telephony.Sms.getDefaultSmsPackage(getApplicationContext()).equals(getApplicationContext().getPackageName())) {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
getApplicationContext().getPackageName());
startActivity(intent);
}
}
Manifest-Datei:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".RegisterActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DashboardActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
<data android:scheme="mmsto" />
</intent-filter>
</activity>
<activity android:name=".LoginActivity" />
<activity android:name=".ContactListActivity" />
<activity android:name=".CallLogListActivity" />
<activity android:name=".SMSContactListActivity" />
<activity android:name=".SettingsActivity" />
<receiver
android:name=".PhoneStateReceiver"
android:enabled="true"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="9999">
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.provider.Telephony.SMS_DELIVER" />
<action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
</intent-filter>
</receiver>
<!-- Service that delivers messages from the phone "quick response" -->
<service
android:name=".HeadlessSmsSendService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
<intent-filter>
<action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
<data android:scheme="mmsto" />
</intent-filter>
</service>
<activity android:name=".BlockedCallLogActivity" />
<activity android:name=".BlockedSmsLogActivity" />
<activity android:name=".AboutUsActivity" />
</application>
ich verwendet, um dieses Codebeispiel. Es zeigt einen Dialog mit der Messaging App des Telefons. Meine App wird nicht in dieser Liste angezeigt.
Jetzt möchte ich meine App auch auf dieser Liste zeigen, so dass Benutzer meine App aus dieser Liste auswählen können und es wird Standard-SMS-App dieses Telefons sein. Wie kann ich das machen. Bitte antworten Sie mit Beispiel/Codebeispiel. Vielen Dank.
http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html – CommonsWare
Ich folgte ihm, aber nicht funktioniert. Meine App wird nicht im Listendialog angezeigt. –
Dann poste dein gesamtes Manifest.Angeben des Blogposts, mit dem ich verlinkt habe: Damit Ihre App in den Systemeinstellungen als zulässige Standard-SMS-App angezeigt wird, muss die Manifestdatei bestimmte Funktionen deklarieren. Sie haben bisher nur eine davon in Ihrer Frage angezeigt. – CommonsWare