Mal*_*nta 4 sms android package
在Android KitKat版本之后,我们可以通过"Telephony.sms.getDefaultSmsPackage(context);"找到默认的sms包名.但是如何在KitKat版本之前获得包名?
请参阅http://android-developers.blogspot.in/2013/10/getting-your-sms-apps-ready-for-kitkat.html
根据文档" Android 4.4(KitKat)使现有API公开,并添加了默认SMS应用程序的概念,用户可以在系统设置中选择. "
在您的代码中,您应该将其作为单独的案例处理
Intent smsIntent;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(context); //Need to change the build to API 19
smsIntent = new Intent(Intent.ACTION_SEND);
smsIntent.setType("text/plain");
smsIntent.putExtra(Intent.EXTRA_TEXT,"content");
//if no default app is configured, then choose any app that support this intent.
if (defaultSmsPackageName != null) {
smsIntent.setPackage(defaultSmsPackageName);
}
} else {
smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", phoneNumber);
smsIntent.putExtra("sms_body","body");
}
Run Code Online (Sandbox Code Playgroud)
低于kiktat
public static final String getDefaultSmsPackage(Context context){
String defApp = Settings.Secure.getString(context.getContentResolver(), "sms_default_application");
PackageManager pm = context.getApplicationContext().getPackageManager();
Intent iIntent = pm.getLaunchIntentForPackage(defApp);
ResolveInfo mInfo = pm.resolveActivity(iIntent,0);
return mInfo.activityInfo.packageName;
}
Run Code Online (Sandbox Code Playgroud)
高于或等于kitkat
Telephony.Sms.getDefaultSmsPackage(this)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7145 次 |
| 最近记录: |