Intent Filter 提供不存在的文件路径

我正在创建一个必须从 WhatsApp 导出聊天功能接收 txt 文件的应用程序。


我用一个意图过滤器完成了这个,我得到了一个路径“content:/com.whatsapp.provider.media/export-chat/(phone-number)@s.whatsapp.net 我把它作为一个文件,当我尝试阅读它,它不在那里。它给出了 FileNotFound 异常。


这是意图过滤器


<activity android:name="app.app.whatsanalitycs.Recibir">

            <intent-filter>

                <action android:name="android.intent.action.SEND"/>

                <action android:name="android.intent.action.SEND_MULTIPLE"/>

                <category android:name="android.intent.category.APP_EMAIL"/>

                <category android:name="android.intent.category.APP_MESSAGING"/>

                <category android:name="android.intent.category.DEFAULT"/>

                <category android:name="android.intent.category.BROWSABLE"/>

                <data android:mimeType="text/*" />

            </intent-filter>

        </activity>

这是当有人从 whatsapp 调用 intent-filter 时调用的 onCreate 函数


@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        TextView text = findViewById(R.id.hola);

        TextView text2 = findViewById(R.id.hola2);

        Intent intent = getIntent();

        String action = intent.getAction();

        String type = intent.getType();

        text.setText(intent.getDataString());

        Bundle bundle = intent.getExtras();

        ArrayList a = (ArrayList) bundle.get(Intent.EXTRA_STREAM);

        Uri uri = (Uri) a.get(0);

        File file = new File(uri.toString());

        text2.setText(file.getParent());

    }

我一直在检查其他使用 Intent 过滤器的应用程序,文件路径应具有以下格式:“content://com.whatsapp.provider.media/item/(somenum)” 我知道这一点是因为我试图通过以下方式发送导出的聊天记录whatsapp,这就是保存它的 url。我不知道问题是出在意图过滤器上,还是出在我如何读取接收到的意图上。


浮云间
浏览 133回答 1
1回答

红糖糍粑

我得到一条路径“content:/com.whatsapp.provider.media/export-chat/(phone-number)@s.whatsapp.net那是一个Uri。具体来说,它是一个来自ContentProvider.我把它作为一个文件它不是一个文件。这是一个Uri。使用ContentResolver和openInputStream()读入与之关联的内容Uri。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java