我想通过通知打开上传的文件,但它无法正常工作,通知会显示但是一旦我点击它就没有任何反应。
这是我的代码的通知部分:
Uri uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setDataAndType(Uri.parse("file://"+file_path), f.getString("type") );
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(Main.this, 0, i , 0);
mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder( BabupMain.this);
mBuilder.setContentTitle("test").addAction(android.R.drawable.alert_dark_frame, "hi",contentIntent)
.setContentText("click to open the file")
.setLights(0xfff89829, 300, 5000)
.setOnlyAlertOnce(true)
.setSound(uri)
.setSmallIcon(android.R.drawable.ic_input_add);
mNotifyManager.notify( NOTIFICATION_ID , mBuilder.build());
答案 0 :(得分:0)
我没有使用过NotificationCompat,所以不知道是否这样做, 但我创建了一个Intent然后不得不使用
PendingIntent contentIntent = PendingIntent.getActivity(this,0, i, PendingIntent.FLAG_CANCEL_CURRENT);
将打开文件的意图与通知
联系起来答案 1 :(得分:0)
以你的方式设置意图可以启动一个可以查看文件的应用程序,但是如果没有应用程序与你的意图相匹配,那么什么都不会发生。
你有这段神秘的代码
{i.setDataAndType(Uri.parse(“file://”+ file_path),f.getString(“type”))}
但没有提到“f”是什么,所以我无法判断{f.getString(“type”))是否有效 MIME类型。
无论如何,这一切都没有实际意义。通知的内容几乎在所有情况下,Intent都应该返回创建通知的应用程序。这样做可为用户提供最佳上下文。 从应用程序,允许用户发送另一个Intent来打开文件。
还要记住正确设置后端堆栈。当前的实现不会这样做,因此一旦查看文件就会导致混乱的导航路径。