tl; dr:当我在运行时动态检索file_path时,为什么需要file_paths资源?
我目前正在通过构建自己的应用来学习Android Studio。 我现在想做的就是拍照,然后从中获取一些文字。 为了拍照并在以后使用它,我按照Android开发者的Taking Photos Simply指南进行操作。此时,建议使用File Provider。
在清单中,文件提供程序添加如下:
String requestId = MediaManager.get().upload(uri).unsigned("test").option("public_id", uniqueId)
.callback(new UploadCallback() {
@Override
public void onStart(String requestId) {
if ((ProgressBar) findViewById(R.id.progressBarHorizontal) != null) {
isPostUploading = true;
((ImageView) findViewById(R.id.img_video_icon)).setVisibility(View.GONE);
((RelativeLayout) findViewById(R.id.progressBarDialog)).setVisibility(View.VISIBLE);
((ImageView) findViewById(R.id.imgPreview)).setImageBitmap(bitmap);
((ImageView) findViewById(R.id.imgPreview)).setVisibility(View.VISIBLE);
((ProgressBar) findViewById(R.id.progressBarHorizontal)).setProgress(0);
}
}
@Override
public void onProgress(String requestId, long bytes, long totalBytes) {
}
@Override
public void onSuccess(String requestId, Map resultData) {
String img3 = uniqueId + ".jpg";
String url = MediaManager.get().url().generate(img3);
new PublishPostTask().execute(desc, role_id, "image", uniqueId, url);
Log.d("msg", "role_id : " + role_id);
}
@Override
public void onError(String requestId, ErrorInfo error) {
String er = String.valueOf(error);
Toast.makeText(HomeActivity.this, "error : " + er, Toast.LENGTH_LONG).show();
}
@Override
public void onReschedule(String requestId, ErrorInfo error) {
}
}).dispatch();
我正在努力使用<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.mydomain.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
,尤其是meta-data
在拍摄照片简单教程中,这是XML的必要补充,使其工作:
android:resource=@xml/file_paths"
所以我的问题是:我应该遵循的开发者指南中的良好做法是什么,我该怎么做?
编辑:为了让事情变得更清楚,我无法理解如何在这里使用资源。 这是指南中的方法代码:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/com.example.package.name/files/Pictures" />
</paths>
所以我在应用程序的运行时期间动态获取文件的名称(以及它的文件路径)。 那是什么文件/路径,我不明白它的用法。
答案 0 :(得分:0)
在 res 目录中创建一个文件夹并将其命名为 xml,在其中创建一个文件 file_paths 并将所有内容替换为: >
SELECT DISTINCT
TOP(50) cam.UserID AS PatientID,
mppi.DisplayName AS Surgeon,
ISNULL(sci.IOPStatus, 'N/A') AS Status,
tkstat.TrackerStatusID AS Stat_2
FROM
Main AS cam
INNER JOIN
Providers AS rap
ON cam.VisitID = rap.VisitID
INNER JOIN
ProviderInfo AS mppi
ON rap.UnvUserID = mppi.UnvUserID
LEFT OUTER JOIN
Inop AS sci
ON cam.CwsID = sci.CwsID
LEFT OUTER JOIN
TrackerStatus AS tkstat
ON cam.CwsID = tkstat.CwsID
WHERE
(
cam.Location_ID IN
(
'SURG'
)
)
AND
(
rap.IsAttending = 'Y'
)
AND
(
cam.DateTime BETWEEN CONCAT(CAST(GETDATE() AS DATE), ' 00:00:00') AND CONCAT(CAST(GETDATE() AS DATE), ' 23:59:59')
)
AND
(
cam.Status_StatusID != 'Cancelled'
)
ORDER BY
cam.UserID ASC
如果您想预览该教程中捕获的图像,则将文件从其路径解码为位图,然后从 onActivityResult()
将其显示到 ImageView 上<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="my_images" path="Pictures" />
</paths>