私は以下にいくつか問題があります。pdfリーダーがインストールされていないときにメッセージが表示されない
ファイルがダウンロードされると、ユーザーに通知が表示されます。通知をタブすると、該当するアプリケーション(PDFリーダーなど)がファイルを開くために検索されます。
通知をタブすると機能が動作しますが、PDFリーダーがインストールされていない場合メッセージが表示されないはユーザーに表示されます。
誰かが私を助けてくれますか?私はトーストメッセージを呼び出すためにそこに来るものが正確にわからないので、tryブロックが空であることを知っています。
ありがとうございます。
EDIT:「context.startActivity(target);」のコメントを外すと機能します。これは自動的にオープンプロセスを開始します。ユーザが通知にタブを当てたときに開始されます。
通知コード:あなたはそれが存在するかどうかを判断するために活動を開始しようとするべきではありません
public static Intent openPdf(String urlPath, Context context,
NotificationManager mNotificationManager, int NOTIFYCATIONID) {
File file = new File(urlPath);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = file.getName().substring(file.getName().lastIndexOf(".")+1);
String type = mime.getMimeTypeFromExtension(ext).toLowerCase();;
Intent target = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file));
target.setDataAndType(Uri.fromFile(file), type);
target.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
try {
//context.startActivity(target);
} catch (ActivityNotFoundException e) {
Toast.makeText(context, "No application found to open PDF, please install one.", Toast.LENGTH_SHORT).show();
}
mNotificationManager.cancel(NOTIFYCATIONID);
return target;
}
Thx Marcin、resolveActivity(PackageManager)を(PackageManager、int)に適用できないというエラーが表示されます。 あなたのコードをopenPDFメソッドに入れました。 (target.resolveActivity(pm、PackageManager.MATCH_DEFAULT_ONLY)== null) – Simon
はい、申し訳ありません。このメソッドはインテントではなくpmで呼び出す必要があります。私は自分の答えを更新しました。 –
同様の質問に対する答えには、いくつかの同等のアプローチが記載されているので、私はそれらをすべてリストアップしました。 –