通知不会打开文件

时间:2013-04-05 18:13:07

标签: java android

我想通过通知打开上传的文件,但它无法正常工作,通知会显示但是一旦我点击它就没有任何反应。

这是我的代码的通知部分:

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());  

2 个答案:

答案 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来打开文件。

还要记住正确设置后端堆栈。当前的实现不会这样做,因此一旦查看文件就会导致混乱的导航路径。