我对android编程很新,而且我也不是最好的程序员,以下代码应该根据我的知识运行......所以,这就是问题所在: 我希望我的应用程序显示为在手机上打开txt文件的选项。这就是为什么我创建了一个广播接收器,它在我的清单中指定如下:
<receiver android:name="MyBroadcastReceiver" android:enabled="true">
<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"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="text/plain"/>
<data android:pathPattern=".*\\.txt"/>
<data android:host="*"/>
</intent-filter>
</receiver>
我的广播接收器类看起来像这样:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent intentNoteActivity = new Intent(context, NoteActivity.class);
intentNoteActivity.putExtra("URI", intent.getData());
context.startActivity(intentNoteActivity);
}
}
但是如果我尝试在手机上安装应用程序的地方打开一个txt文件,它就不会显示我的应用程序。我做错了什么?
答案 0 :(得分:1)
这就是我创建广播接收器的原因
BroadcastReceiver
不用于以这种方式打开文档。 Activity
可以做到这一点。
但如果我尝试在手机上安装应用程序的地方打开一个txt文件,它就不会显示我的应用程序。
这是因为其他应用会使用startActivity()
,而非sendBroadcast()
使用ACTION_VIEW
Intents
。
创建活动并使用<intent-filter>
。它应该适用于一些应用程序,但不是很多。取消<data android:pathPattern=".*\\.txt"/>
和<data android:host="*"/>
以及添加<data android:scheme="content"/>
有助于提高兼容性。