当前位置: 首页 > 知识库问答 >
问题:

执行app时返回异常-Android

强化
2023-03-14

代码activity_lastcall.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Lastcall">

    <TextView
        android:id="@+id/lc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

代码lastcall.java:

package pt.ubi.di.pdm.expermissions1;

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CallLog;
import android.widget.TextView;

public class Lastcall extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lastcall);
        TextView oTV = (TextView)findViewById(R.id.lc);
        String strUriCalls = "content://call_log/calls";
        Uri uriCalls=Uri.parse(strUriCalls);
        Cursor curCalls = getContentResolver().query(uriCalls ,null ,null ,null , null);
        String sInfo = "Last Call:";


        if (curCalls.moveToLast())
            sInfo += curCalls.getString(curCalls.getColumnIndex(CallLog.Calls.NUMBER))+"\n" +
                    "Duration:"+curCalls.getString(curCalls.getColumnIndex(CallLog.Calls.DURATION));
        oTV.setText(sInfo);

    }
}

代码AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pt.ubi.di.pdm.expermissions1">
    <uses-permission
        android:name="android.permission.READ_CALL_LOG"></uses-permission>
    <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=".Lastcall">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我需要得到最后一个电话,并在TextView中写入号码和姓名。

共有1个答案

周和志
2023-03-14

将其添加到manifest.xml

<uses-permission
        android:name="android.permission.WRITE_CALL_LOG"></uses-permission>

您需要在运行时请求,如下所示。此代码应该执行之前,你做任何调用权限相关的任务。

if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_CALL_LOG)!= PackageManager.PERMISSION_GRANTED) {
    // Permission is not granted
     if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CALL_LOG)) {

    } else {
        // No explanation needed; request the permission
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CALL_LOG},
                MY_PERMISSIONS_READ_CALL_LOG);
    }
}

这适用于读取调用日志权限,如果需要,也适用于写入调用日志权限。

 类似资料:
  • 问题内容: 我发现以下行为至少 很奇怪 : 在子句中使用时,该异常消失。那是个错误吗?那在任何地方都有记录吗? 但是真正的问题(我将标记为正确的答案)是: python开发人员允许这种奇怪行为的原因是什么? 问题答案: 您询问了有关Python开发人员的推理。我不能为他们说话,但是没有其他行为可以理解。函数可以返回值,也可以引发异常。它不能同时做到。“最终”子句的目的是提供“保证”运行的清除代码,

  • 问题内容: 我有个问题。我已经在过去的3个小时中一直试图弄清楚这一点,但是我不知道为什么这没有按照我的预期工作。请知道我还是Java语言的新手,因此,如果有任何明显的内容,我深表歉意。 但是,通过此代码,我试图从Twitter获取承载令牌,并返回2个完全不同的东西。 当我获得预期的输出时: 但是,如果I ,我将以JSON形式获取http请求。我在下面粘贴了我的代码,希望有人能够提供帮助。 问题答案

  • 我编写了一个简单的注释和一个AnnotationProcessor来处理注释。 注释只有一个值:它应该是现有接口(带有包)的名称。 注释处理器应该检索注释的值,检索接口的类对象,最后应该打印接口中声明的所有方法。 例:这是我的注解 这是带注释的类: 我的处理器看起来像 现在,如果我配置一个像java.lang.CharSequence这样的接口作为MyAnnoation的接口名称,这个工作原理很好

  • E/AndroidRuntime:致命异常:main 进程:za.co.riggaroo.motioncamera,pid:17583 kotlin.typeCastException:null不能强制转换为非空类型kotlin.boolean(位于za.co.riggaroo.motioncamera.mainactivity$setuparmsystemtogle$2.ondatachange

  • 我有一个服务,它将数据流到第二个服务,该服务接收对象流并将其保存到我的MongoDB中。在我从流服务中获得的Flux对象上的订阅函数中,我使用ReactiveMongoRepository接口中的保存方法要使用块函数并获得数据,我得到以下错误: 我的代码: 经过一些挖掘,我设法让它工作,但我不明白为什么它现在工作。新守则: block()的定义:无限期订阅此Mono和block,直到收到下一个信号