[英]Notification bar - when clicked, how to open file explorer with specified location
由于一些误解,我对我的问题进行了重大更新。
所以,我有一个通知。 当我单击该通知时,我希望打开文件资源管理器应用程序(当然是第三方应用程序)。 无论是哪个应用程序,如果文件资源管理器不止一个,它应该提示“打开方式” - 然后打开 /sdcard/folder(如果可能)
我的通知在 Listar.class 上
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_menu_save, msg, System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, Open.class), 0);
notification.setLatestEventInfo(this, filename+" downloaded", "Click to open folder", contentIntent);
manager.notify(1, notification);
和我的 Open class 它在这里:
public class Open extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
Intent intent = new Intent("org.openintents.action.PICK_FILE");
startActivityForResult(intent, 1);
}
catch(Exception e)
{
Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
Log.v("EX",e.toString());
}
}
}
这将打开 oi 文件管理器(没有“打开方式” - 我没有选择默认应用程序)和 /sdcard,这就是我需要你帮助的原因。
Intent toLaunch = new Intent();
toLaunch.setAction(android.content.Intent.ACTION_VIEW);
toLaunch.setDataAndType(Uri.fromFile(new File("file_path")), MimeTypeMap.getSingleton().getMimeTypeFromExtension("jpeg")); // you can also change jpeg to other types
而不是:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, Open.class), 0);
写:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, toLaunch , 0);
通知旨在启动活动。 在您的情况下,您将启动 Listar.class。 class 应该执行您需要的操作,例如打开/显示文件。
http://developer.android.com/reference/android/app/PendingIntent.html应该描述您构建的 PendingIntent 的用途。
如果您想了解是否存在特定意图(例如安装了 package),您可以使用类似这样的东西......
/**
* Checks the system to see if the passed intent package exists.
*
* @param pIntent
* intent to be checked
* @return true if the package exists
*/
private final boolean checkIfPackageExists( final Intent pIntent ) {
// Build package manager
final PackageManager packageManager = this.getPackageManager();
final List<ResolveInfo> list = packageManager.queryIntentActivities( pIntent, PackageManager.MATCH_DEFAULT_ONLY );
return list.size() > 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.