首页 > 解决方案 > 调用 serviceAccount.json 抛出 FileNotFoundException

问题描述

我正在尝试在我的项目中实现一个 Google API,我需要调用传入凭据的 serviceAccount.json。

这是我的代码:

    public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
    private static final String SERVICE_ACCOUNT_CREDENTIAL_FILE = "/home/and03/AndroidStudioProjects/Parent/app/src/main/res/assets/serviceAccount.json";


    private static final String OAUTH_SCOPE = "https://www.googleapis.com/auth/androidmanagement";
    AndroidManagement androidManagement;
    String json,abcd;



    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        try {
            FileInputStream input = new FileInputStream(SERVICE_ACCOUNT_CREDENTIAL_FILE);
            GoogleCredential credential = GoogleCredential.fromStream(input).createScoped(Collections.singleton(OAUTH_SCOPE));
            androidManagement = new AndroidManagement(GoogleNetHttpTransport.newTrustedTransport(),JacksonFactory.getDefaultInstance(),credential);
            //createEnterprise(androidManagement);
            Log.e(TAG, "onCreate: "+ androidManagement );
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    private String createEnterprise(AndroidManagement androidManagementClient)
            throws IOException {
        SignupUrl signupUrl =
                androidManagementClient
                        .signupUrls()
                        .create()
                        .setProjectId("managementtest")
                        .setCallbackUrl("https://unsplash.com/v1/signupUrls")
                        .execute();

        String enterpriseToken = displayUrlToAdmin(signupUrl.getUrl());

        Enterprise enterprise =
                androidManagementClient
                        .enterprises()
                        .create(new Enterprise())
                        .setProjectId("managementtest")
                        .setSignupUrlName(signupUrl.getName())
                        .setEnterpriseToken(enterpriseToken)
                        .execute();

        return enterprise.getName();
    }

    private String displayUrlToAdmin(String url) {
        Log.i("My Url",url);
       return url;
    }
}

这是我从此处描述的谷歌文档中的示例中获取的代码

Android Management API:创建企业

我知道我们需要 FileInputStream 从 assets 文件夹中调用这个文件,但它仍然显示 filenotfoundException。

还有另一个示例应用程序显示了完整的演示

查看:

Android 管理 API 的示例应用程序

我只想知道,如何在我的应用程序中使用 .json 文件的路径,以便它能够正确运行。

标签: javaandroidfilenotfoundexception

解决方案


推荐阅读