Панель уведомлений - при нажатии как открыть проводник в указанном месте - PullRequest
3 голосов
/ 21 июля 2011

Я сделал серьезное обновление своего вопроса из-за некоторых недоразумений.

Итак, у меня есть уведомление. И когда я нажимаю на это уведомление, я хочу, чтобы открылось приложение проводника (конечно, стороннее). Независимо от того, какое приложение есть, если есть что-то большее, чем для файловых обозревателей, оно должно запросить «открыть с помощью» - и затем открыть / 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);

и мой открытый класс здесь:

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

}

Откроется файловый менеджер (без «open with» - я не выбрал приложение по умолчанию) и / sdcard, поэтому мне нужна ваша помощь.

Ответы [ 3 ]

3 голосов
/ 29 октября 2014
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);
1 голос
/ 22 июля 2011

Если вы хотите узнать, существует ли конкретное намерение (например, установлен ли пакет), вы можете использовать что-то вроде этого ...

/**
 * 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;
}
1 голос
/ 21 июля 2011

Уведомления предназначены для запуска деятельности.В вашем случае вы запускаете Listar.class.Этот класс должен выполнить требуемое вами действие, например, открыть / отобразить файл.

http://developer.android.com/reference/android/app/PendingIntent.html должен описать назначение созданного вами PendingIntent.

...