5

私のアプリケーションは、共有したい CSV ファイルを生成できます。MIME タイプを使用してtext/comma_separated_values/csvいますが、送信時にIntentセレクターが表示されないのは、デバイスがファイルの処理方法を認識していないためです。どのタイプを使用すればよいですか?

これは私のコードです:

    Uri csv = lh.createDailyCSV();

    if(csv == null){
         Toast.makeText(this, getString(R.string.error_creating_csv), Toast.LENGTH_LONG).show();
    }
    else{
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/comma_separated_values/csv");
        sharingIntent.setData(csv); 
        startActivity(Intent.createChooser(sharingIntent, getResources().getText(R.string.send_to)));
    }   

マニフェストで次のように宣言しました。

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

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

        <data android:mimeType="text/comma_separated_values/csv" />
    </intent-filter>

そして、私は例外を受け取ります

03-12 12:19:23.430: E/ActivityThread(24011): Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@412fc920 that was originally registered here. Are you missing a call to unregisterReceiver()?

この例外は、チューザーにオプションがないか、1 つしかない場合に発生することを読みました。

[編集]

データをインテントに添付する方法を変更しました。私が使用したsharingIntent.setData(csv)の代わりに:

sharingIntent.putExtra(Intent.EXTRA_STREAM, csv);

そして今、セレクターは正常に動作しますが、電子メールでファイルを送信しようとすると、エラーが発生します: ファイルを表示できませんでした。

[/編集]

4

3 に答える 3

13

正しいMIMEタイプはtext/csv。です。それでも問題が解決しない場合は、Evernoteなどの多くtext/plainのアプリからユーザーが選択できるようにするために使用できます。

更新更新後、ファイルを他の任意のアプリと「共有」したくないようですが、電子メールでのみ送信しますか?どうか明らかにしてください。

于 2013-03-12T11:32:15.870 に答える
1

私の場合、Goo では次のように動作します。

intent.setType("text/*");
于 2016-03-03T20:36:25.377 に答える
0
<intent-filter>
    <action android:name="android.intent.action.SEND"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="image/*"/>
    <data android:mimeType="text/*"/>
</intent-filter>
于 2020-07-06T21:30:05.750 に答える