1559bf2836f5da25b75bfb229fec0d20d540ee426James Dong/*
2559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * Copyright (C) 2006 The Android Open Source Project
3559bf2836f5da25b75bfb229fec0d20d540ee426James Dong *
4559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * Licensed under the Apache License, Version 2.0 (the "License");
5559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * you may not use this file except in compliance with the License.
6559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * You may obtain a copy of the License at
7559bf2836f5da25b75bfb229fec0d20d540ee426James Dong *
8559bf2836f5da25b75bfb229fec0d20d540ee426James Dong *      http://www.apache.org/licenses/LICENSE-2.0
9559bf2836f5da25b75bfb229fec0d20d540ee426James Dong *
10559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * Unless required by applicable law or agreed to in writing, software
11559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * distributed under the License is distributed on an "AS IS" BASIS,
12559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * See the License for the specific language governing permissions and
14559bf2836f5da25b75bfb229fec0d20d540ee426James Dong * limitations under the License.
15559bf2836f5da25b75bfb229fec0d20d540ee426James Dong */
16559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
17a80b438bf7a8741f1f8215eba896eb20640896f7Sudheer Shanka#include <binder/IActivityManager.h>
18559bf2836f5da25b75bfb229fec0d20d540ee426James Dong#include <binder/IBinder.h>
19559bf2836f5da25b75bfb229fec0d20d540ee426James Dong#include <binder/IServiceManager.h>
20559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
21559bf2836f5da25b75bfb229fec0d20d540ee426James Dong#include "ActivityManager.h"
22559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
23559bf2836f5da25b75bfb229fec0d20d540ee426James Dongnamespace android {
24559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
25559bf2836f5da25b75bfb229fec0d20d540ee426James Dong// Perform ContentProvider.openFile() on the given URI, returning
26559bf2836f5da25b75bfb229fec0d20d540ee426James Dong// the resulting native file descriptor.  Returns < 0 on error.
27559bf2836f5da25b75bfb229fec0d20d540ee426James Dongint openContentProviderFile(const String16& uri)
28559bf2836f5da25b75bfb229fec0d20d540ee426James Dong{
29559bf2836f5da25b75bfb229fec0d20d540ee426James Dong    int fd = -1;
30559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
31559bf2836f5da25b75bfb229fec0d20d540ee426James Dong    sp<IServiceManager> sm = defaultServiceManager();
32a80b438bf7a8741f1f8215eba896eb20640896f7Sudheer Shanka    sp<IBinder> binder = sm->getService(String16("activity"));
33a80b438bf7a8741f1f8215eba896eb20640896f7Sudheer Shanka    sp<IActivityManager> am = interface_cast<IActivityManager>(binder);
34559bf2836f5da25b75bfb229fec0d20d540ee426James Dong    if (am != NULL) {
35a80b438bf7a8741f1f8215eba896eb20640896f7Sudheer Shanka        fd = am->openContentUri(uri);
36559bf2836f5da25b75bfb229fec0d20d540ee426James Dong    }
37559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
38559bf2836f5da25b75bfb229fec0d20d540ee426James Dong    return fd;
39559bf2836f5da25b75bfb229fec0d20d540ee426James Dong}
40559bf2836f5da25b75bfb229fec0d20d540ee426James Dong
41559bf2836f5da25b75bfb229fec0d20d540ee426James Dong} /* namespace android */
42