我已经开发了一个Android应用程序,用于接收来自特定号码的短信。它可以将短信标记为从该号码读取。要将短信标记为已读,需要将应用程序设置为默认值。如何在Android中以编程方式将应用设置为默认设置?
据我了解,您需要在启动应用程序时要求用户将您的应用程序设置为默认消息传递应用程序。为此,请使用以下代码:
在下面设置intent-filter
要显示的活动。在这种情况下,我考虑了“ DefaultSMSAppChooserActivity”
<activity android:name=".DefaultSMSAppChooserActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.APP_MESSAGING" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
调用以下方法可显示他/她的设备上所有可用的短信应用程序,包括您的默认设置。
public static void openSMSappChooser(Context context) {
PackageManager packageManager = context.getPackageManager();
ComponentName componentName = new ComponentName(context, DefaultSMSAppChooserActivity.class);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_APP_MESSAGING);
selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(selector);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要在任何地方使用以上方法。
希望这对您有帮助!!!
小智 4
在您的清单文件中声明这一点
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/sms" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
我不确定 mime 类型,但请检查消息传递的正确 mime 类型,因为它非常重要。
归档时间: |
|
查看次数: |
2524 次 |
最近记录: |