ラグナンダンの提案のおかげで答えが得られました。
ここでは、ダウンロード ファイルのヘッダー情報を取得するために追加の呼び出しが必要です。ヘッダー セクションで、ファイルの名前を取得しました。
また、このFilename from URL にはファイル名サフィックスの投稿が含まれていないことがわかりました。これにより、要求時に取得できるヘッダーの詳細に関する詳細を取得できました。
これを使用できますURLUtil.guessFileName(url, null, null)
が、これには私の場合の呼び出し手段のファイル名が与えられます。私はこのようなURLを持っています
misc/dnload.php?t1=MzQ0MDA=&t2=MTY5NTUz&t3=MTY5NTUzMTMwMjEyMDNfcGhhcm1hY3kga2V5IGluZm8ucG5n&t4=MTMwMjEyMDM=
したがって、上記のリンクからdnload.phpがファイル名として抽出されます。これは、ダウンロードした元のファイル名ではなく、そのファイルのダウンロード リンクを作成したばかりです。
これを使用するコードは、ファイル名を取得できます。情報を取得するための追加の呼び出しですが、実際にはダウンロードします。
Content-Disposition this is the attribute in header section through which we can get the file name as in attachment form.
このように情報が返されるContent-Disposition: attachment; filename="fname.ext"
ので、ファイル名を抽出するだけです
class GetFileInfo extends AsyncTask<String, Integer, String>
{
protected String doInBackground(String... urls)
{
URL url;
String filename = null;
try {
url = new URL(urls[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
conn.setInstanceFollowRedirects(false);
String depo = conn.getHeaderField("Content-Disposition");
String depoSplit[] = depo.split("filename=");
filename = depoSplit[1].replace("filename=", "").replace("\"", "").trim();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
}
return filename;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute();
// use result as file name
}
}