startActivityForResult,intent: Intent { cmp=com.android.mms/.ui.ConversationList (has extras) },
时间: 2024-06-05 11:11:59 浏览: 207
这是一个启动 Android 短信应用的代码,使用 startActivityForResult 方法启动一个名为 "com.android.mms.ui.ConversationList" 的 Activity,并传递了一些额外的参数。当该 Activity 返回结果时,将调用 onActivityResult 方法以处理结果。具体实现和结果处理需要根据具体情况进行编写。
相关问题
如何解决FATAL EXCEPTION: main Process: com.example.administrator.bookmanager, PID: 18790 java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{ba36b24 18790:com.example.administrator.bookmanager/u0a131} (pid=18790, uid=10131) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
这个错误表明你的应用程序没有权限打开媒体文档提供程序。要解决这个问题,你需要在你的应用程序中请求权限并使用 `ACTION_OPEN_DOCUMENT` 或相关的 API 打开媒体文档提供程序。你可以按照以下步骤解决这个问题:
1. 在你的 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
这将允许你的应用程序读取外部存储器的内容。
2. 在你的代码中请求这个权限:
```java
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
```
这会弹出一个对话框,请求用户允许你的应用程序读取外部存储器的内容。
3. 当用户允许你的应用程序访问外部存储器时,你可以使用 `ACTION_OPEN_DOCUMENT` 或相关的 API 打开媒体文档提供程序。
```java
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE);
```
这将打开媒体文档提供程序,用户可以选择他们所需的文档。
请注意,如果你使用的是 Android 10 或更高版本,你需要使用 `ACTION_OPEN_DOCUMENT_TREE` 或相关的 API 来访问外部存储器。
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.intenttest, PID: 8155 android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.intenttest/com.example.intenttest.MyActivity}; have you declared this activity in your AndroidManifest.xml? at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2049) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1709) at android.app.Activity.startActivityForResult(Activity.java:5192) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:597) at android.app.Activity.startActivityForResult(Activity.java:5150) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:583) at android.app.Activity.startActivity(Activity.java:5521) at android.app.Activity.startActivity(Activity.java:5489) at com.example.intenttest.MainActivity$2.onClick(MainActivity.java:60) at android.view.View.performClick(View.java:7125) at android.view.View.performClickInternal(View.java:7102) at android.view.View.access$3500(View.java:801) at android.view.View$PerformClick.run(View.java:27336) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
这个错误提示是因为在你的 AndroidManifest.xml 文件中没有声明 com.example.intenttest.MyActivity 这个 activity。你需要在 manifest 文件中添加一个 <activity> 标签,举例来说:
```
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intenttest">
<application
...
>
...
</application>
<activity android:name=".MyActivity"/>
</manifest>
```
其中,android:name 属性应该设置为你要启动的 activity 的完整类名。
阅读全文