当前位置: 首页 > 面试题库 >

应用程式中的Android Image Viewer

戚令秋
2023-03-14
问题内容

我正在尝试启动一个图像,该图像将使用内置的Android图像查看器写入到我的应用程序目录中。此图像已在应用程序的不同部分写入应用程序目录。获取以下文件时:

super.getFilesDir() + "/current.png"

File.exists()返回true。

如何启动内置​​的Android图像查看器来查看此文件?目前我正在做:

File f = new File(super.getFilesDir()+"/current.png");
uri = Uri.parse("file://"+super.getFilesDir()+"/current.png");
startActivity(new Intent(Intent.ACTION_VIEW, uri));

而且它一直在搅动:

10-11 13:09:24.367:INFO / ActivityManager(564):开始活动:目的{act =
android.intent.action.VIEW dat =
file:///data/data/com.davidgoemans.myapp/files/current .png} 10-11
13:09:24.367:ERROR /
myapp(2166):发生了异常android.content.ActivityNotFoundException:找不到用于处理Intent的活动{act
= android.intent.action.VIEW dat = file:/// data
/data/com.davidgoemans.myapp/files/current.png}

无论我将uri模式更改为什么(例如,content://,file://,media://,image://)。


问题答案:

一种方法是实现上下文提供程序,以使其他应用程序可以访问您的数据。

创建一个包含以下内容的新类:

public class FileContentProvider extends ContentProvider {
   private static final String URI_PREFIX = "content://uk.co.ashtonbrsc.examplefilecontentprovider";

   public static String constructUri(String url) {
       Uri uri = Uri.parse(url);
       return uri.isAbsolute() ? url : URI_PREFIX + url;
   }

   @Override
   public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
       File file = new File(uri.getPath());
       ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
       return parcel;
   }

   @Override
   public boolean onCreate() {
       return true;
   }

   @Override
   public int delete(Uri uri, String s, String[] as) {
       throw new UnsupportedOperationException("Not supported by this provider");
   }

   @Override
   public String getType(Uri uri) {
   throw new UnsupportedOperationException("Not supported by this provider");
   }

   @Override
   public Uri insert(Uri uri, ContentValues contentvalues) {
       throw new UnsupportedOperationException("Not supported by this provider");
   }

   @Override
   public Cursor query(Uri uri, String[] as, String s, String[] as1, String s1) {
       throw new UnsupportedOperationException("Not supported by this provider");
   }

   @Override
   public int update(Uri uri, ContentValues contentvalues, String s, String[] as) {
       throw new UnsupportedOperationException("Not supported by this provider");
   }

}

将内容提供者添加到您的AndroidManifest.xml中:

<provider android:name=".FileContentProvider" android:authorities="uk.co.ashtonbrsc.examplefilecontentprovider" />

然后,您应该可以"content://uk.co.ashtonbrsc.examplefilecontentprovider/" + the full path to the image在ACTION_VIEW意向中使用。



 类似资料:
  • 通过 Polar Flow 应用程式,您可以随时立即查看离线活动数据与训练数据的相关说明。 获取您的全天候活动的详情找出您距离每日目标的差距以及如何达到目标查看步数、涵盖的距离、燃烧的卡路里和睡眠时间。 通过 Flow 应用程式,您可轻松访问您的训练目标并查看有氧健康测试结果。快速获取您的训练的概况并立即分析您的表现的每个细节。在训练日记中查看您的训练的每周总结。您还可在 Flow 社区中与您的朋

  • M600 包括以下默认的应用程式: Agenda(待办事项) Alarm(闹钟) Contacts(联系人) Find my phone*(寻找我的手机) Fit(健身) Fit Workout(健身训练) Flashlight(手电筒) Polar Play Store Reminders (提示) 设置 Stopwatch(秒表) Timer(计时器) Translate(翻译) Weathe

  • 通过 Polar Flow 应用程式,您可以随时立即查看离线活动数据与训练数据的相关说明。 获取您的 24/7 全天候活动的详情。找出您距离每日目标的差距以及达到目标的方法。查看步数、行走距离、燃烧的卡路里和睡眠时间在应起来运动时获得不活跃提示信息。 通过 Flow 应用程式,您可轻松访问您的训练目标并查看有氧健康测试结果。快速获取您的训练的概况并立即分析您的表现的每个细节在训练日记中查看您的训练

  • 以下说明也适用于 Polar Watch Faces(Polar 时钟画面)应用程式的更新。 M600 的 Polar 应用程式通过您智能手表上的 Play Store 应用程式进行更新。 Android 手机用户:若要使用您的智能手表上的 Play Store 应用程式,您的 M600 需要连接到 Wi-Fi 网络或通过蓝牙连接到您已经联网的手机上。 iPhone 用户:若要使用 Play St

  • 打开 Polar 应用程式 按下 M600 的正面按钮(注意,您必须先退出其他应用程式)。 或 按下侧边电源按钮打开应用程式菜单,找到并轻触Polar。 或 使用语音: 请确保您的 M600 显示屏处于启动状态且您当前处于主屏幕上。 说 "Ok Google"。 说“打开 Polar” 或“开始训练”。 请见以下说明,了解如何打开 "Ok Google" 语音识别功能,以利用语音浏览 Polar

  • 在 M600 上使用 Polar 应用程式进行训练 在 M600 上使用 Polar 应用程式可让您充分利用这款专门针对运动而设计的智能手表。 了解 Polar 应用程式的内容以及如何浏览此程式: Polar 应用程式菜单结构 浏览 Polar 应用程式 追踪您的训练并了解训练期间的心率、速度与距离等内容: 开始训练 训练期间 暂停/停止训练 训练后 同时查看关于如何佩戴 M600 以获得准确的心