我的应用程序具有浏览手机和SD卡上的文件并使用其他应用程序打开它们的功能.我想要一个解决方案,我不必指定MimeType,可以使用任何类型的文件.
这是我的代码:
Intent myIntent = new Intent(Intent.ACTION_VIEW);
myIntent.setData(Uri.fromFile(item));
startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=file:///sdcard/dropbox/test.pdf }
Run Code Online (Sandbox Code Playgroud) 我正在使用意图启动相机:
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
getParent().startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
Run Code Online (Sandbox Code Playgroud)
和使用:
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
photoImage.setImageBitmap(thumbnail);
photoImage.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
但它只是一个缩略图,我如何获得完整的位图?我知道我可以使用自己的Activity并使用:
Camera.PictureCallback()
Run Code Online (Sandbox Code Playgroud)
但无论如何使用Intent做到了吗?
谢谢!
编辑:
我也尝试过:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Uri uri = data.getData();
imageView.setImageURI(uri);
}
Run Code Online (Sandbox Code Playgroud)
它适用于从库中选择的照片,但对于相机意图,data.getData()返回null.
我用按钮创建了一个应用程序,并为该按钮编写了onClickListener.我已经尝试了几个示例代码示例,但没有一个有效.他们都带来了Android相机应用程序,不拍照.我想要一些代码可以放在我的onClickListener中,所以当我按下屏幕上的按钮时,会拍摄一张照片.
当我在Android活动中按下按钮时,如何让相机拍照?
我写了一个应用程序的Beta版本.它可以通过网络下载(我不会将其发布到Play Market).在新版本发布时,是否可以在没有Play Market的情况下更新此应用程序?
我一直试图获取捕获图像的路径以删除图像.在StackOverflow上找到了很多答案,但没有一个对我有用.我得到了以下答案:
private String getLastImagePath() {
final String[] imageColumns = { MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = POS.this.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
null, null, imageOrderBy);
if (imageCursor.moveToFirst()) {
// int id = imageCursor.getInt(imageCursor
// .getColumnIndex(MediaStore.Images.Media._ID));
String fullPath = imageCursor.getString(imageCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
return fullPath;
} else {
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
此代码适用于Samsung选项卡,但在Lenovo选项卡和i-ball选项卡中不起作用.那么,任何人都可以帮我找到另一种解决方案吗?任何帮助将不胜感激.谢谢.
这是我的onActivityResult:
if (requestCode == CmsInter.CAMERA_REQUEST && resultCode == RESULT_OK) {
//Bitmap photo = null;
//photo = (Bitmap) data.getExtras().get("data");
String txt = "";
if (im != …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个应用程序从url下载pdf,将它们存储在sd上,然后由adobe pdf reader或其他能够打开pdf的应用程序打开.
直到现在,我已经"成功下载并将其存储在Sd卡上"(但每当我尝试使用pdf阅读器打开pdf时,阅读器崩溃并发出意外错误),例如,http://maven.apache.组织/ Maven的1.x中/ maven.pdf
这是我的下载程序的代码:
//........code set ui stuff
//........code set ui stuff
new DownloadFile().execute(fileUrl, fileName);
private class DownloadFile extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... strings) {
String fileUrl = strings[0]; // -> http://maven.apache.org/maven-1.x/maven.pdf
String fileName = strings[1]; // -> maven.pdf
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File folder = new File(extStorageDirectory, "testthreepdf");
folder.mkdir();
File pdfFile = new File(folder, fileName);
try{
pdfFile.createNewFile();
}catch (IOException e){
e.printStackTrace();
}
FileDownloader.downloadFile(fileUrl, pdfFile);
return null;
}
}
public class FileDownloader { …Run Code Online (Sandbox Code Playgroud) 我尝试按下一个打开相机并拍照的按钮.我的代码在这里
//for imports check on bottom of this code block
public class HomeProfileActivity extends AppCompatActivity {
//Button camera
public static final String TAG = HomeProfileActivity.class.getSimpleName();
public static final int REQUEST_TAKE_PHOTO = 0;
public static final int REQUEST_TAKE_VIDEO = 1;
public static final int REQUEST_PICK_PHOTO = 2;
public static final int REQUEST_PICK_VIDEO = 3;
public static final int MEDIA_TYPE_IMAGE = 4;
public static final int MEDIA_TYPE_VIDEO = 5;
private Uri mMediaUri;
private ImageView photobutton;
private Button buttonUploadImage, buttonTakeImage;
protected void onCreate(Bundle …Run Code Online (Sandbox Code Playgroud) 我需要截取屏幕截图Activity(没有标题栏,用户不应该看到实际拍摄的截图),然后通过动作菜单按钮"分享"进行分享.我已经尝试了一些解决方案,但它们对我不起作用.有任何想法吗?
public void DOCS(View btnDocs)
{
File fileBrochure = new File("android.resource://com.project.datastructure/assets/abc.pdf");
if (!fileBrochure.exists())
{
CopyAssetsbrochure();
}
/** PDF reader code */
File file = new File("android.resource://com.project.datastructure/assets/abc.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),"application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try
{
getApplicationContext().startActivity(intent);
}
catch (ActivityNotFoundException e)
{
Toast.makeText(Stack_dr.this, "NO Pdf Viewer", Toast.LENGTH_SHORT).show();
}
}
private void CopyAssetsbrochure() {
AssetManager assetManager = getAssets();
String[] files = null;
try
{
files = assetManager.list("");
}
catch (IOException e){}
for(int i=0; i<files.length; i++)
{
String fStr = files[i];
if(fStr.equalsIgnoreCase("abc.pdf"))
{ …Run Code Online (Sandbox Code Playgroud) 我有一个程序,总是将相同的文件附加到GMAIL(Compose> Attach File> Open From>"MyProgram").它总是会选择相同的文件.
它做的是:
String path = Environment.getExternalStorageDirectory() + "/file.3gp";
File f = new File(path);
Uri data = Uri.fromFile(f);
Intent i = new Intent();
i.setData(data);
setResult(Activity.RESULT_OK, i);
finish();
Run Code Online (Sandbox Code Playgroud)
这个工作正常,直到Android 6.0.现在,我在尝试使用它时收到以下错误:
无法附加空文件
Astro文件共享给了我同样的错误(可以是旧版本).
但是,我安装了ES文件资源管理器,当我执行相同的例程并选择文件时,我收到一个Dialog,其中说:
拿起文件为
- 普通Android方式(适用于彩信,Gmail,...)
- 文件方式(如果失败,请尝试此操作)
"文件方式"将失败,因为我的程序."普通的Android方式"将正常工作.
有没有人知道它的作用,所以我可以复制?
提前致谢!
OBS:已经尝试了很多次putExtra(STREAM,路径),但没有成功.