2

PDFリーダーでPDFファイルを開こうとしています。これを行う方法をさらに検索しています。多くの回答が見つかりましたが、すべての回答はそのファイルを「SDカード」に保存することを示しています。

ファイルをSDカードに保存するのは良い考えですが、問題は、ユーザーがSDカードを電話にインストールしていない場合です。現在、多くの携帯電話には大容量の内蔵メモリが搭載されています。たとえば、Samsung galaxy S3、HTC One V、Samsung Galaxy Note、Sony Xperia S、および多くの携帯電話です。

だから私の質問は:これらの携帯電話にはすでに大容量の内蔵メモリがあるため、ユーザーはSDカードを追加する必要はありません(ユーザーによって異なります)。この場合、公共の場所 (SD カード) などの他のアプリケーションからアクセスできる場所はどれか。

私の問題を検索すると、Android プラットフォームによって提供されるアプリケーション データを保存する場所について説明するこのリンクが見つかりました。

Android プラットフォームには、アプリ データを保存するための次のオプションが用意されています。

  1. 共有設定
  2. 内部記憶装置
  3. 外部記憶装置
  4. SQLite データベース
  5. ネットワーク接続

Android は、コンテンツ プロバイダを使用して、プライベート データを他のアプリケーションに公開する方法を提供します。

コンテンツ プロバイダーについて読みましたが、その仕組みがわかりませんでした。

チュートリアルがどのように機能するかを示している場合は、そのチュートリアルのリンクを提供してください。または、他の方法でこれを行うことができる場合は、その方法を教えてください。

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

1

ドキュメントによると、PDFをパブリックストレージに保存する必要がある唯一の実際のオプションは、外部ストレージに保存することであるようです。いつでもアプリで外部ストレージが利用可能かどうかを確認し、利用可能な場合はそれを使用してPDFを共有できます。

試すことができる別のアプローチ(私はこれを試していませんが、今考えただけです)は、PDFを一時ファイルに書き込んでから、その一時ファイルの場所を共有することです。

File.createTempFile()は一時ファイルを作成します。その一時ファイルが保存されている場所を確認し、他のアプリからその場所にアクセスできるかどうかを実験してみることができます。

于 2012-08-10T14:08:46.367 に答える
0

SDカードの代わりに、次のテクノロジーを使用して保存できます。

  1. 共有設定例:--SharedPreferences demo_sp = getApplicationContext().getSharedPreferences( "demo"、MODE_PRIVATE); String dem = demo_sp.getString( "DEMO"、 "demo");
  2. 内部記憶装置
  3. SQLiteデータベース。sqliteに何かを保存すると、携帯電話の.dbファイルに作成されます。uはそれにアクセスできます。
于 2012-08-10T09:49:26.257 に答える
0

私のアプリでは、利用可能な場合にのみ sdCard を使用し、それ以外の場合は電話のメモリを使用します。

電話メモリの場合、次のようにファイル オブジェクトを取得できます。

File file=new File(context.getFilesDir(), FILENAME);

もちろん context は Context オブジェクトです。その後、このファイルを通常の Java ファイルのように読み取り/書き込み操作で使用できます。

Sd カード ストレージの場合、まずマニフェストでこれを宣言する必要があります。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

外部ストレージが利用可能かどうかを確認する必要があります。

public static boolean hasSdCard(){
    return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}

次に、ファイルオブジェクトを取得できます

File file = new File(Environment.getExternalStorageDirectory() + DIRECTORY + FILENAME);
于 2012-08-15T17:26:14.337 に答える