AGM*_*zim 2 java android broadcastreceiver android-manifest smsmanager
我正在开发一个短信阻止应用程序.这对Jelly-Bean来说很好.它不是从Kitkat到Marshmallow.我搜索谷歌和每个人都建议取得用户的许可,使其成为这款手机的默认短信应用程序.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
清单文件:
<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>
Run Code Online (Sandbox Code Playgroud)
我用过这段代码示例.它显示了一个带有手机短信应用的对话框.我的应用没有显示在此列表中.
现在我想在此列表中显示我的应用程序,因此用户可以从此列表中选择我的应用程序,它将是该手机的默认短信应用程序.我怎样才能做到这一点.请回复example/code-sample.谢谢.
我跟着它
不是根据你问题中的代码.让我们回顾一下博文中的四个要求:
在广播接收器中,包括SMS_DELIVER_ACTION("android.provider.Telephony.SMS_DELIVER")的intent过滤器.广播接收器还必须要求BROADCAST_SMS权限.
你有这个,以你的形式PhoneStateReceiver
.
在广播接收器中,包括具有MIME类型"application/vnd.wap.mms-message"的WAP_PUSH_DELIVER_ACTION("android.provider.Telephony.WAP_PUSH_DELIVER")的intent过滤器.广播接收器还必须具有BROADCAST_WAP_PUSH权限.
你没有这个.
在您传递新消息的活动中,包括ACTION_SENDTO("android.intent.action.SENDTO")的intent过滤器,其中包含schemas,sms:,smsto:,mms:和mmsto:.
你有这个,形式DashboardActivity
.
在服务中,包括ACTION_RESPONSE_VIA_MESSAGE("android.intent.action.RESPOND_VIA_MESSAGE")的intent过滤器,其中包含schemas,sms:,smsto:,mms:和mmsto:.此服务还必须具有SEND_RESPOND_VIA_MESSAGE权限.
你有这个,形式HeadlessSmsSendService
.
所以,按照说明添加一个<receiver>
for WAP_PUSH_DELIVER_ACTION
,看看是否有帮助.
归档时间: |
|
查看次数: |
7278 次 |
最近记录: |