Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");
startActivity(Intent.createChooser(intent, "Send Email"));
Run Code Online (Sandbox Code Playgroud)
上面的代码打开一个对话框,显示以下应用程序: - 蓝牙,Google Docs,Yahoo Mail,Gmail,Orkut,Skype等.
实际上,我想过滤这些列表选项.我想只显示与电子邮件相关的应用程序,例如Gmail,Yahoo Mail.怎么做?
我在"Android Market"应用程序上看到了这样的例子.
该对话框仅显示电子邮件应用程序,例如Gmail,Yahoo Mail等.它不显示蓝牙,Orkut等.什么代码产生这样的对话?
突然间,我在我的 Android 项目中遇到了这个构建错误:
unexpected element <queries> found in <manifest>
Run Code Online (Sandbox Code Playgroud)
我如何解决它?
android manifest android-manifest android-gradle-plugin flutter
到目前为止,我有这种方法,但它似乎缺少了一些东西
例如,我有一个文件/sdcard/sound.3ga返回false(就像没有可以处理这种类型文件的活动),但当我从文件管理器打开它时,它打开媒体播放器没有问题
我认为这个意图并不完整,我需要更多的东西让我自己确定只有没有可以处理这个意图的活动时,handlerExists变量才会为false
PackageManager pm = getPackageManager();
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriString)).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
intent.setDataAndType(Uri.fromFile(new File(uriString)),mimetype);
boolean handlerExists = intent.resolveActivity(pm) != null;
Run Code Online (Sandbox Code Playgroud) 这是我播放录制的音频3gp文件的代码
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/mp3");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是在我的HTC设备(Android 2.2 Froyo)中运行它时会显示异常:
05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.597: WARN/System.err(4065): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1567)
05-04 16:37:37.597: INFO/ActivityManager(92): Starting activity: Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.607: WARN/System.err(4065): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1537)
05-04 16:37:37.607: WARN/System.err(4065): at android.app.Activity.startActivityForResult(Activity.java:2858)
05-04 16:37:37.607: WARN/System.err(4065): at android.app.Activity.startActivity(Activity.java:2964)
05-04 16:37:37.607: WARN/System.err(4065): at com.ey.camera.AudioRecorder.playAudio(AudioRecorder.java:244)
05-04 16:37:37.607: WARN/System.err(4065): at com.ey.camera.AudioRecorder$4.onClick(AudioRecorder.java:225)
05-04 16:37:37.607: WARN/System.err(4065): at android.view.View.performClick(View.java:2408)
05-04 16:37:37.607: WARN/System.err(4065): …Run Code Online (Sandbox Code Playgroud) 我正在设计一个应用程序,我需要在单击按钮时打开电子邮件客户端.应使用预定义的主题和"到"地址打开电子邮件客户端.有没有办法达到这个目的?如果可能,请提供解决方案和代码示例...
我在这里发布这个问题用于教育目的,因为我无法在任何地方找到答案,最终找到了原因,即我自己.
这是有问题的代码:
// initially getting the intent from polling the PackageManager about activities resolving Search intent.
ComponentName componentName = intent.resolveActivity(pm);
if (componentName != null) {
context.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
尽管检查我得到一个ActivityNotFound异常.
编辑:显然这一点对每个人来说并不明显:为什么有一个活动解决了意图,但试图启动它会抛出一个ActivityNotFound异常 - 两个事实显然是矛盾的?
我打算使用android studio开发一个Android移动应用程序,用户可以在其中提供电子邮件地址和密码.然后该密码应发送到提到的电子邮件地址.任何机构都可以共享任何代码片段来执行此操作吗?
我想在用户点击按钮时打开PDF文件.目前,我正在使用此代码来实现此目的:
Uri path = Uri.fromFile(new File("file:///android_asset/regola11_1.pdf"));
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(pdfIntent);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
当我选择使用Adobe Acrobat时,我会收到一条显示为Toast的消息
"This file could not be accessed Check the location or the network and try again."
Run Code Online (Sandbox Code Playgroud)
当我尝试使用Drive PDF Viewer时,我明白了
"Cannot display PDF ( regola11_1.pdf cannot be opened)"
Run Code Online (Sandbox Code Playgroud)
PDF文件存储在
app > build > intermediates > assets
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
编辑
现在我使用以下代码:
File file = new File("\"file:///android_asset/regola11_1.pdf");
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
context.startActivity(intent);
}
catch (ActivityNotFoundException e) { …Run Code Online (Sandbox Code Playgroud) 我再次需要你的帮助。我正在使用 Camera Intent,我不明白我的代码有什么问题,直到 Android 10 一切正常,但在 Android 11 中,我得到了结果代码 0。我在下面共享代码,请帮助我我的方法有什么问题:
清单权限 <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
具有文件创建的意图函数:
private void openCameraApp() { Intent picIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)。addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 尝试 {
String file_path = Environment.getExternalStorageDirectory().toString() +
"/" + mContext.getResources().getString(R.string.app_name);
File dir = new File(file_path);
if (!dir.exists())
dir.mkdirs();
imagePath = new File(dir, mContext.getResources().getString(R.string.app_name) + System.currentTimeMillis() + ".png");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
picIntent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID, imagePath));
setUri(FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID, imagePath));
} else {
picIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imagePath));
setUri(Uri.fromFile(imagePath));
}
((Activity) mContext).startActivityForResult(picIntent, …Run Code Online (Sandbox Code Playgroud)文档 - https://developer.android.com/training/camera/photobasics
我已按照所有必需的步骤使用相机捕获图像。
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) { // its always null
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
Run Code Online (Sandbox Code Playgroud)
takePictureIntent.resolveActivity(getPackageManager())- 此行始终返回 null。如果我跳过此检查,相机会打开但应用程序崩溃。
我正在关注Android Codelabs,特别是我正在以隐式意图开发此Codelab。
Codelab有以下方法:
public void openWebsite(View view) {
String url = mWebsiteEditText.getText().toString();
Uri webpage = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Log.d("ImplicitIntents", "Can't handle this intent!");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是返回intent.resolveActivity(getPackageManager())null,但如果我省略它并只调用startActivity(intent),它可以正常工作并在 Google Chrome 中打开 Uri。
我想知道为什么intent.resolveActivity(getPackageManager())返回 null,即使 Uri 可以在 Google Chrome 中打开?
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.implicitintents">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action …Run Code Online (Sandbox Code Playgroud) android ×11
camera ×2
email ×2
java ×2
android-11 ×1
assets ×1
capture ×1
file-type ×1
flutter ×1
galaxy-tab ×1
image ×1
intentfilter ×1
manifest ×1
mime-types ×1
pdf ×1
uri ×1