我在BroadcastReceiver中使用了这段代码但是在这里无法解析电话。如何在BroadcastReceiver中使用Telephony?我认为这是因为在BroadcastReceiver中使用它。
public class SmsFilter extends BroadcastReceiver {
SharedPreferences preferences = null ;
Context context;
static ContentResolver ctx;
String text;
@Override
public void onReceive(final Context context, Intent intent) {
if(android.os.Build.VERSION.SDK_INT>= 4.0){
Log.i("LOG", "this is: "+Build.VERSION.RELEASE);
final String myPackageName = context.getPackageName();
if (!Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName)) {
// App is not default.
// Show the "not currently set as the default SMS app" interface
View viewGroup = findViewById(R.id.not_default_app);
viewGroup.setVisibility(View.VISIBLE);
// Set up a button that allows the user to change the default SMS app
Button button = (Button) findViewById(R.id.change_default_app);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent =
new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
myPackageName);
context.startActivity(intent);
}
});
} else {
// App is the default.
// Hide the "not currently set as the default SMS app" interface
View viewGroup = findViewById(R.id.not_default_app);
viewGroup.setVisibility(View.GONE);
}
}}}
答案 0 :(得分:0)
而不是Telephony.Sms.getDefaultSmsPackage(this)
,您需要Telephony.Sms.getDefaultSmsPackage(context)
。在您的情况下,this
引用BroadcastReceiver
,该方法需要context
参数。