根据这个问题,我使用了一个自定义ImageGatter类来显示我使用Picasso从TextView中的服务器获取的图像
public class PicassoImageGetter implements Html.ImageGetter {
private TextView textView = null;
Context mContext;
public PicassoImageGetter() {
}
public PicassoImageGetter(TextView target, Context context) {
textView = target;
mContext = context;
}
@Override
public Drawable getDrawable(String source) {
BitmapDrawablePlaceHolder drawable = new BitmapDrawablePlaceHolder();
Picasso.get().load(source).into(drawable);
return drawable;
}
private class BitmapDrawablePlaceHolder extends BitmapDrawable implements com.squareup.picasso.Target {
protected Drawable drawable;
@Override
public void draw(final Canvas canvas) {
if (drawable != null) {
drawable.draw(canvas);
}
}
public void setDrawable(Drawable drawable) {
this.drawable …Run Code Online (Sandbox Code Playgroud) android android-image picasso android-bitmap android-internal-storage
我试图打开并编辑一个Word文档位于我的外部存储在我的Xamarin.Android应用程序与MS-Word中使用此代码:
File wordFile = new File(wordFilePath);
wordFile.SetWritable(true);
FileInfo fileInfo = new FileInfo(wordFilePath);
fileInfo.IsReadOnly = false;
Android.Net.Uri uri = FileProvider.GetUriForFile(Context, Context.PackageName + ".provider", wordFile);
Intent intent = new Intent();
intent.AddFlags(ActivityFlags.NewTask);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
intent.AddFlags(ActivityFlags.GrantWriteUriPermission);
intent.AddFlags(ActivityFlags.GrantPersistableUriPermission);
intent.SetAction(Intent.ActionView);
intent.SetData(uri);
Context.StartActivity(intent);
Run Code Online (Sandbox Code Playgroud)
问题是,该文件始终为只读。当我通过任何文件浏览器(例如File Manager Pro)打开文档时,它不是只读的,我可以编辑文件。
我是否缺少需要在应用程序或FileProvider中设置的任何权限?
编辑:
intent.SetAction(Intent.ActionEdit);没有区别intent.SetDataAndType(uri, "application/msword");没有区别ActionView&组合SetDataAndType也不起作用像这样 …
android ms-word android-intent xamarin.android android-internal-storage
我创建了一个可以在其内部存储中导入文件的应用程序.为了打开与外部应用程序文件(例如PF观众或照片),我试图按照这些指南:官方指南,TOPIC1,标题2,topic3和topic4但没有成功.
这是我的代码:
在我的清单中
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.myapp.chatcher"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)
我的包价值: package="com.myapp.catcher"
我的file_paths.xml
<paths
xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="projection" path="." />
</paths>
Run Code Online (Sandbox Code Playgroud)
我的代码
String fileName = path.substring(path.lastIndexOf("/") + 1);
String shelf = path.substring(path.lastIndexOf("PRIVATE") + 8, path.lastIndexOf("/"));
File filePath = new File(mContext.getFilesDir(), "PRIVATE".concat("/").concat(shelf).concat("/"));
File newFile = new File(filePath, fileName);
Uri contentUri = FileProvider.getUriForFile(mContext, "com.myapp.chatcher", newFile);
Intent myIntent = new Intent();
myIntent.setAction(Intent.ACTION_VIEW);
myIntent.setData(contentUri);
myIntent.setType(mimeType);
myIntent.setFlags(FLAG_GRANT_READ_URI_PERMISSION | FLAG_GRANT_WRITE_URI_PERMISSION);
mContext.startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)
我创建了这样的层次结构:
PRIVATE -> …Run Code Online (Sandbox Code Playgroud) 当我全新安装应用程序时,我注意到大多数应用程序都会在“内部存储”>“Android”>“数据”>“com.example.package”文件夹中创建一个文件夹。例如,它的 Facebook 应用程序将类似于 com.facebook.xxxxx。
\n\n然而,我最近参与的一个项目,我注意到路径“内部存储”>“Android”>“数据”>(没有packege文件夹)中没有这样的应用程序文件夹。
\n\n在什么情况下它不会在上述路径中创建应用程序文件夹?因为我调试的大多数应用程序都是通过 android studio 运行或通过 apk 文件安装...默认情况下,上述位置始终有一个应用程序文件夹。
\n\n因为我想将以下文件写入 getFilesDir(),
\n\nFile file = new File(activity.getFilesDir(),imageFileName);\nRun Code Online (Sandbox Code Playgroud)\n\n通过使用 getFilesDir(),写入的文件将进入 Android > Data > Package 文件夹 > Files 文件夹,大多数已安装的应用程序在 Android > Data > (此处)中都有一个包文件夹路径。今天我意识到我现在正在做的一个项目,它没有创建这样的包文件夹。那么,当我使用 getFilesDir() 时,这些文件仍将在上述路径中存储和创建,但它是不可见的?或者我使用 getFilesDir() 创建的那些文件将不会被创建?因为正如我提到的,这个应用程序不会创建包文件夹。我必须使用 makedir 吗?如果是的话,会进行什么检查?if(\xef\xbc\x81activity.getFilesDir().exist())
\n\nFile file = new File(activity.getFilesDir(),imageFileName);\n\n//getFilesDir() normally is package folder Android > Data > (package folder*) > Files\nRun Code Online (Sandbox Code Playgroud)\n 当我想到这个问题时,我想知道:是否真的没有办法找出是否存在采用的SD?对于摩托罗拉G3,getExternalFilesDirs()当存在外部SD时,有两条路径返回,但只有一条(模拟的,总是存在的)将SD格式化为内部.其他设备似乎表现相似.
所以,如果我想知道是否存在内部SD,我需要在哪里查看?是否有任何(非制造商特定的)提供,所以我可以检查,如果用户希望使用内部模拟,Environment.getExternalStorageDirectory()因为他已经安装了内部SD?
android android-sdcard android-6.0-marshmallow android-internal-storage
我想从互联网上下载一些音频文件。我想使用downloadmanager下载这个文件,但我不知道如何将这些文件保存到android中的特定内部存储位置。InternalStorage/folder/filename.mp3(这样我就可以轻松访问它们)。
manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse("URL");
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
long reference = manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)
对于下载很有用。但我们无法指定这些文件的位置。
那么如何指定这些文件保存在内部存储的特定位置呢?还有,如何access使用delete这些文件。
请不要提出这个问题,因为我在阅读很多文章时感到困惑。
如果有其他更好的选择或任何建议请评论
android android-download-manager android-internal-storage android-storage
我对android开发非常陌生,请需要新手帮助...
我正在创建一个应具有2个目录,一个Databases目录和一个Images目录的应用程序,就像Whatsapp拥有的一样。
当我浏览手机时,我想在文件管理器中看到这些目录,就像看到其他应用程序文件夹一样。我尝试了在这里找到的所有内容,并通过代码在内部存储和外部存储中创建了它。该文件夹似乎已创建,但是当我浏览手机的文件管理器时,找不到带有应用程序名称的文件夹,而在其中没有我的数据库和图像文件夹...我在做什么错?我需要在android studio中创建这些文件夹作为添加文件夹吗?还是我需要通过代码创建它?
您能给我完成这项任务所需要做的动作吗?我正在使用android studio 3.1.3。感谢您的帮手!:)
android-external-storage android-studio android-internal-storage android-studio-3.1 android-studio-3.1.3
我想以编程方式从实习存储中读取确切的容量。
我使用的是 Samsung Galaxy S7 Edge 32GB 设备。
在预装的三星文件管理器(德语:Eigene Dateien)中,它显示了 32GB 的总容量。即使在菜单 => 设置 => 存储中,它也显示 32GB。
(如截图所示)
当我使用下面的代码时,它显示总容量为 24,4GB。
(在帖子末尾的日志中显示)
问:如何获得我设备的准确 32GB 总容量?
截图
完整代码:
package spicysoftware.com.space;
import android.os.Environment;
import android.os.StatFs;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String InternalFreeSpace = convertBytes(getInternalFreeSpace());
Log.v("InternalFreeSpace : ", InternalFreeSpace);
String InternalTotalSpace = convertBytes(getInternalTotalSpace());
Log.v("InternalTotalSpace : ", InternalTotalSpace);
String InternalUsedSpace = convertBytes(getInternalUsedSpace());
Log.v("InternalUsedSpace …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序,需要显示默认相机文件夹中的图像.我的问题是我不知道如何找到相机照片的内部默认存储文件夹.
当我找到它将手机连接到PC(它是没有SD卡的三星Galaxy S7)时,我看到图片存储在DCIM/Camera.但是,这不起作用.做:files = new File("DCIM/Camera/");导致应用程序说没有任何内容.
如何找到相机照片的默认内部存储文件夹?
我想在我的 android 手机上创建一个文本文件并在其中写入一些文本。
当我点击按钮时,它说saved to /data/user/0/com.example.savetotextfile/files/example.txt
但我找不到这些文件夹。
大多数应用程序都在设备存储 > Android > 数据中,但我自己创建的应用程序不在那里。
我错过了许可吗?
我不想写入 SD 卡。
public class MainActivity extends AppCompatActivity {
private static final String FILE_NAME = "example.txt";
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
}
public void save(View v) {
String text = editText.getText().toString();
FileOutputStream fos = null;
try {
fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
fos.write(text.getBytes());
editText.getText().clear();
Toast.makeText(this, "Saved to" + getFilesDir() + "/" + FILE_NAME, Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) { …Run Code Online (Sandbox Code Playgroud) android text-files android-external-storage android-internal-storage