- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
构建基本应用程序并获取 IllegalArgumentException:有一个按钮可以启动相机应用程序,我正在尝试将图像保存到图片中。 dispatchTakePictureIntent();
当我点击图像按钮时调用方法
发现了几个类似的问题,但无法解决我的问题:
下面是我的代码。有人可以帮助我解决我所缺少的问题吗?
public class CatalogDataActivity extends AppCompatActivity {
static final int REQUEST_IMAGE_CAPTURE = 1;
public String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/CatalogData";
@Override
protected void onCreate(Bundle savedInstanceState) {
//verifyStoragePermissions();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_catalog_data);
final Button btCamera=(Button)findViewById(R.id.btn_camera);
final Button btSave=(Button)findViewById(R.id.btn_save);
final EditText etProductName=(EditText)findViewById(R.id.et_productName);
final EditText etProductDescription=(EditText)findViewById(R.id.et_description);
final TextView finalText=(TextView)findViewById(R.id.tv_saved_text);
File dir=new File(path);
if(!dir.isDirectory()){
dir.mkdir();
}
btCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(getPackageManager())!=null){
startActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE);
}*/
dispatchTakePictureIntent();
}
});
btSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newProductDataStr=etProductName.getText()+","+etProductDescription.getText()+"|";
File file=new File(path+"/catalogdata.txt");
System.out.println("Path:"+path);
writeToFile(newProductDataStr,getApplicationContext());
String data=readFromFile(getApplicationContext());
finalText.setText(data);
//finalText.
String []splitData=data.split("|");
//System.out.println(">>>>>>>>>>>>>>>>>>>>////"+splitData.length+"/////>>>>>>>>>>>>>>>>>>"+splitData[splitData.length-4]);
}
});
}
private void writeToFile(String data,Context context) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("config1.txt", Context.MODE_APPEND));
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e) {
System.out.println("Exception"+ "File write failed: " + e.toString());
}
}
private String readFromFile(Context context) {
String ret = "";
try {
InputStream inputStream = context.openFileInput("config1.txt");
if ( inputStream != null ) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ( (receiveString = bufferedReader.readLine()) != null ) {
stringBuilder.append(receiveString);
}
inputStream.close();
ret = stringBuilder.toString();
}
}
catch (FileNotFoundException e) {
Log.e("login activity", "File not found: " + e.toString());
} catch (IOException e) {
Log.e("login activity", "Can not read file: " + e.toString());
}
return ret;
}
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap bitMap = (Bitmap) extras.get("data");
String ImagePath = MediaStore.Images.Media.insertImage(
getContentResolver(),
bitMap,
"demo_image",
"demo_image"
);
System.out.println("Saved Image in :"+ImagePath);
}
}
String mCurrentPhotoPath;
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
if(!storageDir.isDirectory()){
storageDir.mkdir();
}
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
static final int REQUEST_TAKE_PHOTO = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
ex.printStackTrace();
}
// Continue only if the File was successfully created
if (photoFile != null) {
try {
Uri photoURI = FileProvider.getUriForFile(this,
"com.example.android.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}catch(Exception e){
e.printStackTrace();
}
}
//galleryAddPic();
}
}
private void galleryAddPic() {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
}
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidapp.natty.catalogcreate">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".CatalogDataActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-feature android:name="android.hardware.camera"
android:required="true" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
</manifest>
file_paths.xml placed at res/xml/file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="com.androidapp.natty.catalogcreate/files/Pictures" />
</paths>
activity_catalog_data.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_catalog_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.androidapp.natty.catalogcreate.CatalogDataActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/textView" />
<Button
android:text="Open Camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_marginTop="10dp"
android:id="@+id/btn_camera"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:elevation="0dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="Product Name"
android:ems="10"
android:layout_below="@+id/btn_camera"
android:layout_marginTop="50dp"
android:id="@+id/et_productName"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/et_description"
android:text="Enter Description"
android:layout_below="@+id/et_productName"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/ic_menu_add"
android:layout_marginTop="28dp"
android:id="@+id/iv_image1"
android:layout_below="@+id/et_description" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/ic_menu_add"
android:layout_alignTop="@+id/iv_image1"
android:layout_toRightOf="@+id/textView"
android:layout_toEndOf="@+id/textView"
android:id="@+id/iv_image2" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/ic_menu_add"
android:layout_marginLeft="41dp"
android:layout_marginStart="41dp"
android:id="@+id/iv_image3"
android:layout_alignTop="@+id/iv_image2"
android:layout_toRightOf="@+id/iv_image2"
android:layout_toEndOf="@+id/iv_image2" />
<Button
android:text="Save Product"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_image2"
android:layout_marginTop="18dp"
android:id="@+id/btn_save"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_save"
android:layout_marginTop="56dp"
android:text="Hello World!"
android:id="@+id/tv_saved_text" />
</RelativeLayout>
> W/System.err: java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/Android/data/com.androidapp.natty.catalogcreate/files/Pictures/JPEG_20170222_233359_1077283085.jpg
W/System.err: at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
W/System.err: at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
W/System.err: at com.androidapp.natty.catalogcreate.CatalogDataActivity.dispatchTakePictureIntent(CatalogDataActivity.java:176)
W/System.err: at com.androidapp.natty.catalogcreate.CatalogDataActivity.access$000(CatalogDataActivity.java:33)
W/System.err: at com.androidapp.natty.catalogcreate.CatalogDataActivity$1.onClick(CatalogDataActivity.java:61)
W/System.err: at android.view.View.performClick(View.java:5612)
W/System.err: at android.view.View$PerformClick.run(View.java:22285)
W/System.err: at android.os.Handler.handleCallback(Handler.java:751)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:154)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6123)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
I/Choreographer: Skipped 2537 frames! The application may be doing too much work on its main thread.
I/art: Do full code cache collection, code=101KB, data=124KB
I/art: After code cache collection, code=64KB, data=67KB
最佳答案
我认为这些是正确的方法
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external"
path="." />
<external-files-path
name="external_files"
path="." />
<cache-path
name="cache"
path="." />
<external-cache-path
name="external_cache"
path="." />
<files-path
name="files"
path="." />
</paths>
关于java.lang.IllegalArgumentException : Failed to find configured root that contains/storage/emulated/0/Android/data/异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407486/
大家好,所有rdf/sparql开发人员。这是一个困扰了我一段时间的问题,但是自从发布rdf和sparql规范以来,似乎没人能准确回答这个问题。 为了说明这种情况,RDF定义了几种方法来处理资源的多值
我在我的应用程序中使用 Bootstrap ,现在遇到了一个大问题。问题是 .container 元素在 1360 px 的屏幕上具有 274px 的左右边距,这是相当大的。结果,一切看起来都被挤到了
我在删除Docker容器时遇到问题-当我使用前一个命令时,它不起作用(Docker报告了容器ID,但没有删除它)。后者起作用了。据我所知,Docker语法是相同的: C:\Users\user>doc
std::back_inserter 仅适用于带有 push_back 的容器,因此它不适用于 set 和 map 另一方面,std::inserter 适用于所有容器类型。那么我可以一直使用 std
我正在开发 Spring Boot + Redis 示例。在此示例中,我开发了一些自定义方法,这些方法基于 RoleName 提取详细信息。对于以下方法 userRepository.findByRo
在我的 Swift 应用程序中尝试实现 Google Tag Manager v5 时,我遇到了以下警告,这给我带来了一些麻烦: GoogleTagManager warning: No defaul
安装了新的 Laravel 8 项目并在加载第一个实例时,出现以下错误。这很奇怪,因为我把它放在一边,后来从 Laravel 5.8 -> 6 升级了另一个项目(工作正常),当我去检查网站时遇到了类似
我有以下测试代码,它只创建一个空的 hashmap (containers.map) 并在之后填充它: hashtable = containers.Map('KeyType','char','Va
我对它们之间的差异有一点了解,但是拥有专家意见将是很棒的。 Container-Optimized Google Compute Engine Images Google Container Engi
我会模板化一个函数,以便将它与 vector、set 或任何其他 STL 容器(具有正确的 API...)一起使用 我的函数当前原型(prototype)是: vector> f ( const ve
我正在尝试匹配包含和不包含某些字符串的 Pandas DataFrame 的行。例如: import pandas df = pandas.Series(['ab1', 'ab2', 'b2', 'c
我需要在一个非常庞大的全文索引数据库中找到一些文本,但我不知道在我的查询术语变体中使用什么更好。 我看过一些使用的例子 SELECT Foo.Bar FROM Foo WHERE
Traceback (most recent call last): File "demo.py", line 132, in `result = find_strawberry(image
我正在尝试编写一个函数,其中一列包含一个子字符串并且不包含另一个子字符串。 在下面的示例中,如果我的行包含“某些项目”并且不包含“开销”,我希望我的函数返回 1。 row| example strin
我试图在文本文件中 append 包含给定字符串集的任何行。我创建了一个测试文件,在其中放置了这些字符串之一。我的代码应该将文本文件中包含这些字符串之一的任何行打印在与文本文件中的上一行相同的行上。这
我正在尝试学习如何使用 std.container 中可用的各种容器结构,但我无法理解如何执行以下操作: 1) 如何创建一个空容器?例如,假设我有一个用户定义的类 Foo,并且想要创建一个应该包含 F
$contains: [1, 2] // @> [1, 2] (PG array contains operator) $contained: [1, 2] // <@ [1,
我看到 CSS 中使用了这种“div#container”语法,我想知道它是如何工作的。有人有它的资源吗? 最佳答案 除了作为上面提到的唯一引用之外,ID 还增加了特异性(我强烈建议您阅读这篇文章或一
我有一个生成很多子对象的应用程序,每个子对象都与一些全局应用程序对象一起工作,例如在全局应用程序注册表中注册自己,更新应用程序统计信息等。 应用程序应该如何将访问这些全局对象的能力传递给 child
Here is a Sencha fiddle of my tab panel setup.按钮被动态添加到 vbox 选项卡容器中,该容器是 hbox 布局设置的一部分。选项卡容器的宽度由 flex
我是一名优秀的程序员,十分优秀!