【问题标题】:Receiving Intent接收意图
【发布时间】:2012-06-21 22:18:24
【问题描述】:

我有一个打开 txt 文件的活动。每次用户想要打开一个 txt 文件时,我的应用程序都可以打开它。我的问题是,如何将要打开的文件的路径传递给我的活动?而且,我如何以编程方式接收路径?简而言之,除了在清单文件中设置意图过滤器以允许我的应用在单击该文件时打开一个 txt 文件之外,我还需要做什么?

【问题讨论】:

  • 您的问题的答案取决于您所说的“单击 txt 文件”是什么意思。您使用什么界面来显示文件?您如何确定点击了哪个文件?
  • 我将在滚动视图中显示带有文本视图的文件,并通过文件管理器单击文件。

标签: android android-intent broadcastreceiver intentfilter


【解决方案1】:

您将需要使用广播接收器,但不确定您必须使用什么意图过滤器。

也许可以尝试在清单中添加类似的内容:

<receiver android:name="MyBroadcastReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_VIEW" />
    <action android:name="android.intent.action.ACTION_EDIT" />
    <action android:name="android.intent.action.ACTION_PICK" />
  </intent-filter>
</receiver>

然后你需要像这样创建你的 MyBroadcastReceiver 类:

public final class MyBroadcastReceiver extends BroadcastReceiver
{
  @Override
  public void onReceive(Context context, Intent intent)
  {
    // Your receiver code here...
  }
}

然后在 onReceive 方法中检查当您尝试打开文件时接收到 Intent 的数据。这样您就可以知道哪些数据会到达 Intent。

希望对你有帮助。

【讨论】:

  • 我有一个关于注册这个 MyBroadcastReceiver 的问题。我是否实例化一个新的 IntentFilter 以放入 registerReceiver() 方法?或者有没有办法从 Manifest 文件中获取 Intent Filter?
  • 您可以直接在清单文件中配置intent-filter,如上所述。
【解决方案2】:

您可以使用 File (http://developer.android.com/reference/java/io/File.html) 或 FileInputStream (http://developer.android.com/reference/java/io/FileInputStream.html) 类来保存文件路径和处理输入。如果您通过意图传递,您可能希望使用 putExtra() 方法将包含文件名的字符串添加到意图并在另一端检索它。

【讨论】:

  • 我没有传递意图。我指的是当您单击要打开的文件时,intenet Android 系统本身会通过。我必须使用广播接收器吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
相关资源
最近更新 更多