【问题标题】:How to use IntentFilter programmatically?如何以编程方式使用 IntentFilter?
【发布时间】:2013-01-01 09:45:50
【问题描述】:

当我在 Manifest 文件上尝试 Intent 过滤器时,它运行良好 但是,当我在 Java 上尝试创建 IntentFilter 对象时,它不起作用

public class MainActivity extends Activity {

Intent dialIntent;
IntentFilter filter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btnDial = (Button)findViewById(R.id.btnDial);
    final EditText txtNumber = (EditText)findViewById(R.id.txtNumber);
    btnDial.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+(txtNumber.getText().toString())));
            Uri data = dialIntent.getData();

            filter = new IntentFilter();
            filter.addAction(dialIntent.getAction());
            filter.addCategory(Intent.CATEGORY_DEFAULT);
            filter.addDataScheme(data.getScheme());

            startActivity(dialIntent);
        }
    });
}
}

它只对 BroadcastReceiver 有效吗? 我已经尝试过了,但没有任何反应。 如何以编程方式注册 IntentFilter? 我仍然是 Android 编程的初学者。 请给我一些解释

【问题讨论】:

  • 您创建了过滤器,但您没有对其进行任何操作。您需要为过滤器注册一个侦听器。当有与过滤器匹配的 Intent 时,您希望发生什么?显示您在清单中放入的部分,我们可以向您展示如何在代码中执行相同的操作。

标签: android android-intent intentfilter


【解决方案1】:

我认为您正在尝试拨打任何号码,要拨打特定号码,您可以使用此代码:

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + YOUR_NUMBER));
startActivity(intent);

无需使用意图过滤器。

虽然您可以查看此链接...也许它会对您有所帮助。

cant “addAction” to IntentFilter in android

【讨论】:

  • 感谢您的回答。我正在使用 Intent.ACTION_CALL 只是一个例子。我已经通过清单尝试使用意图过滤器并且效果很好,在单击事件后会弹出一个关于您如何运行代码的弹出窗口。但我不知道如何以编程方式注册 IntentFilter(在 Java 中,而不是 Manifest)这正是我所问的
  • 您也可以使用您的操作来代替 ACTION_CALL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
相关资源
最近更新 更多