Java 当我使用intent启动活动时,我的应用程序已停止工作

Java 当我使用intent启动活动时,我的应用程序已停止工作,java,android,Java,Android,当我从另一个活动启动getContact活动时,应用程序已停止。当我在mainActivity中编写代码时,getContact活动工作得很好,这意味着它不会使用意图。我也尝试了很多解决方案,请帮助我 这是getContact活动 package com.example.myapplication; 导入android.content.Context; 导入android.database.Cursor; 导入android.os.Bundle; 导入android.provider.conta

当我从另一个活动启动getContact活动时,应用程序已停止。当我在mainActivity中编写代码时,getContact活动工作得很好,这意味着它不会使用意图。我也尝试了很多解决方案,请帮助我

这是getContact活动

package com.example.myapplication;
导入android.content.Context;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.support.v7.app.AppActivity;
导入android.widget.Toast;
公共类getContact扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Bundle extras=getIntent().getExtras();
//字符串名称=extras.getString(“ContactName”);
//String SenderNum=extras.getString(“SenderNum”);
String name=“name”;
String number=get(名称,getContact.this);
Toast.makeText(getApplicationContext(),“Number”+Number,Toast.LENGTH\u SHORT.show();
}
公共字符串获取(字符串名称、上下文){
字符串ret=null;
字符串选择=ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME+“类似“%”+NAME+“%”;
字符串[]投影=新字符串[]{ContactsContract.CommonDataTypes.Phone.NUMBER};
游标c=context.getContentResolver().query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,
投影,选择,空,空);
if(c.moveToFirst()){
ret=c.getString(0);
}
c、 close();
if(ret==null)
ret=“未保存”;
返回ret;
}
}
我试着从另一个活动中使用下面的内容开始上面的活动


Intent i=newintent(contactActivity.this,getContact.class);
星触觉(i);
完成();
这是启动活动时logcat的输出

-----------崩溃开始
2019-06-12 09:26:17.399 6361-6361/com.example.myapplication E/AndroidRuntime:致命异常:主
进程:com.example.myapplication,PID:6361
java.lang.RuntimeException:无法启动活动组件信息{com.example.myapplication/com.example.myapplication.getContact}:java.lang.SecurityException:权限拒绝:从ProcessRecord{386669f 6361:com.example.myapplication/u0a335}(pid=6361,uid=10335)打开提供程序com.android.providers.contacts.ContactsProvider2需要android.permission.READ_联系人或android.permission.WRITE_联系人
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2723)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2784)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:163)
位于android.app.ActivityThread.main(ActivityThread.java:6238)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
原因:java.lang.SecurityException:权限拒绝:从ProcessRecord{386669f 6361:com.example.myapplication/u0a335}(pid=6361,uid=10335)打开提供程序com.android.providers.contacts.contacts Provider2需要android.Permission.READ_contacts或android.Permission.WRITE_contacts
位于android.os.Parcel.readException(Parcel.java:1718)
位于android.os.Parcel.readException(Parcel.java:1671)
位于android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:4267)
位于android.app.ActivityThread.acquireProvider(ActivityThread.java:5579)
位于android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2280)
位于android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1533)
位于android.content.ContentResolver.query(ContentResolver.java:518)
位于android.content.ContentResolver.query(ContentResolver.java:475)
在com.example.myapplication.getContact.get(getContact.java:27)上
在com.example.myapplication.getContact.onCreate(getContact.java:19)上
位于android.app.Activity.performCreate(Activity.java:6857)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2676)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2784)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:163)
位于android.app.ActivityThread.main(ActivityThread.java:6238)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

您没有夸大活动的任何布局。您的onCreate方法应该调用setContentView(R.layout.layout\u name)

在查看错误日志后,它显示了安全异常,我相信没有授予权限

在清单文件中添加以下权限

<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
检查是否已使用授予权限

 int result3 = ContextCompat.checkSelfPermission(getApplicationContext(), READ_CONTACTS);
 int result4 = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_CONTACTS);

这两个值都应为0

您的活动名称是从何处开始的IntentContactActivityId您在manifestYes中有getContact。我在清单中声明了使用显示日志中的错误OK非常感谢
 int result3 = ContextCompat.checkSelfPermission(getApplicationContext(), READ_CONTACTS);
 int result4 = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_CONTACTS);