我是android开发的新手,我有一个问题。
我使用Android Studio开发了我的应用程序并将其安装在我的手机上(未植根)。
我无法在/ data /"包名称"。
中看到它但我可以看到其他应用程序:Facebook,Whatsapp等。
为什么呢?我如何安装它,并将其视为Facebook包目录。
由于
答案 0 :(得分:1)
在系统观点上,/data
指的是位于设备文件系统根目录的系统数据目录。但是,从用户的角度来看,它可以理解为位于设备外部存储根部的数据目录(通常但不总是SD卡)。对于系统,此目录的路径不同:例如/mnt/sdcard/data
。
由于无法通过/data
,adb shell
或非根生产设备上的任何文件系统资源管理器访问系统的ddms
目录,我假设您指的是外部存储的data
目录。
<external-storage>/data
,或者最好是<external-storage>/Android/data
,用于将与应用程序相关的数据存储在与您的应用程序包名称相同的目录下(通常为ext.yourbrandname.yourappname
)。
但是你的应用程序并没有自动创建这样的目录。如果需要,您的应用必须创建此目录。因此,您没有看到这样的目录这一事实并不表明该应用程序未安装。
我使用下面的代码(通常是:createRootDirectory((Activity) this)
)来创建这样的目录。此代码专为minSdkVersion="8" targetSdkVersion="19"
设计。可能存在更高minSdkVersion
的优化,我没有在此进行调查:
public static String storagePathToAbsolutePath(String pathFromStorageRoot) {
final StringBuffer buffer = new StringBuffer(255);
buffer.append(Environment.getExternalStorageDirectory().getAbsolutePath());
if (pathFromStorageRoot.charAt(0) != '/') {
buffer.append('/');
}
buffer.append(pathFromStorageRoot);
return buffer.toString();
}
public static boolean createRootDirectory(Context ctx) {
// Constant, copied here: private static final String BASE_DIR = "/Android/data/";
final String dataDir = storagePathToAbsolutePath(BASE_DIR + getPackageName(ctx) + "/")
final File f = new File(dataDir);
return f.mkdirs();
}
附注: 使用[external-storage]/Android/data/<your application package name>
是一个干净而有趣的解决方案:如果用户卸载应用程序,则会自动删除此相应的数据目录。如果<your application package name>
位于其他任何地方,至少使用旧版本的Android(如8),就不会发生这种情况。
/data
是一个系统目录,用于存储与应用程序相关的库,缓存等。
它包含一个data
目录(因此其路径为/data/data/
)。在本文中,您实际上每个已安装的应用程序包都找到一个目录:
每个已安装的软件包都有一个以ext.yourbrandname.yourappname
目录中的软件包名称(&#34; /data/data
&#34;)命名的目录,供系统使用。您的应用程序,无论它是什么,如果已安装,都会有一个目录。
答案 1 :(得分:-1)
这是我的代码: 我正在 res / raw文件夹中读取图片文件并将其写入内部存储空间
package com.splash.myapp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
public class SavingFiles extends Activity {
OutputStream fos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
try {
InputStream inputStreamObj = getResources().openRawResource(R.raw.pics);
fos = openFileOutput("pics.png", Context.MODE_PRIVATE);
final byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = inputStreamObj.read(buffer)) > 0) {
fos.write(buffer);
}
inputStreamObj.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
您可以签入 数据/数据/您的packageName / file