Телефон не звонит с помощью Intent Android_Call - PullRequest
0 голосов
/ 25 апреля 2019

У меня возникли проблемы с Intent Action_Call.Я поместил разрешение в Манифест, но это не работает.Я нажимаю кнопку для вызова и ничего не происходит.Приложение, которое я создаю, - это приложение, которое выполняет несколько Intents, поэтому код не находится в MainActivity.Я не знаю, помогает ли это, но я использую API 28. Спасибо за чтение.

МАНИФЕСТ:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intentsimplicitas">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />

<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=".SmsActivity"></activity>
    <activity android:name=".DialActivity" />
    <activity android:name=".WaysActivity" />
    <activity android:name=".MapActivity" />
    <activity android:name=".PageActivity" />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

JAVA (DialActivity.java)

public class DialActivity extends Activity {

Button btnDial;
EditText edtPhone;
String phone;
Intent it;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dial);
    btnDial = (Button)findViewById(R.id.btnDial);
    edtPhone = (EditText)findViewById(R.id.edtPhone);
}

public void dialClick (View v) {
        phone = edtPhone.getText().toString();
        Uri uri = Uri.parse("tel: " + phone);
        it = new Intent(Intent.ACTION_CALL);
        it.setData(uri);
        startActivity(it);
}


}

Ответы [ 3 ]

0 голосов
/ 26 апреля 2019

Вы можете сделать через Intent

public void dialClick (View v) {
    phone = edtPhone.getText().toString();
    Uri uri = Uri.parse("tel: " + phone);
    it = new Intent(Intent.ACTION_DIAL);
    it.setData(uri);
    startActivity(it);

}

0 голосов
/ 26 апреля 2019

Вам нужно добавить разрешения во время выполнения, чтобы можно было сделать вызов, я рекомендую следующую библиотеку, поскольку гораздо проще реализовать разрешения во время выполнения.

https://github.com/Karumi/Dexter

0 голосов
/ 25 апреля 2019

С https://developer.android.com/training/permissions/requesting:

Запрос разрешения:

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
        Manifest.permission.CALL_PHONE)
        != PackageManager.PERMISSION_GRANTED) {

    // Permission is not granted
    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.CALL_PHONE)) {
        // Show an explanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.
    } else {
        // No explanation needed; request the permission
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.CALL_PHONE},
                MY_PERMISSIONS_REQUEST_CALL_PHONE);

        // MY_PERMISSIONS_REQUEST_CALL_PHONE is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
} else {
    // Permission has already been granted
}

Проверка:

@Override
public void onRequestPermissionsResult(int requestCode,
        String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CALL_PHONE: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted, yay! Do the
                // contacts-related task you need to do.
            } else {
                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...