电话不显示我的应用程序打开txt文件

时间:2017-04-01 13:54:02

标签: java android android-broadcastreceiver

我对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文件,它就不会显示我的应用程序。我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

这就是我创建广播接收器的原因

BroadcastReceiver不用于以这种方式打开文档。 Activity可以做到这一点。

  

但如果我尝试在手机上安装应用程序的地方打开一个txt文件,它就不会显示我的应用程序。

这是因为其他应用会使用startActivity(),而非sendBroadcast()使用ACTION_VIEW Intents

创建活动并使用<intent-filter>。它应该适用于一些应用程序,但不是很多。取消<data android:pathPattern=".*\\.txt"/><data android:host="*"/>以及添加<data android:scheme="content"/>有助于提高兼容性。