2016-11-17 138 views
-2

我已經在清單中添加了record_audio權限,但仍然出現錯誤。很有幫助!com.sinch.android.rtc.MissingPermissionException:需要權限:android.permission.RECORD_AUDIO

com.sinch.android.rtc.MissingPermissionException: Requires permission: android.permission.RECORD_AUDIO 
    at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.throwIfMissingPermission(DefaultCallClient.java:412) 
    at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.call(DefaultCallClient.java:150) 
    at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.callUser(DefaultCallClient.java:102) 
    at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.callUser(DefaultCallClient.java:97) 
    at com.example.ram.dummy.CallActivity$1.onClick(CallActivity.java:45) 
    at android.view.View.performClick(View.java:5697) 
    at android.widget.TextView.performClick(TextView.java:10826) 
    at android.view.View$PerformClick.run(View.java:22526) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:158) 
    at android.app.ActivityThread.main(ActivityThread.java:7224) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+2

您是否已添加清單許可? –

+0

https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it – CommonsWare

+0

@NitinKarande yes..add in manifest –

回答

1

在manifest.xml中是否添加了檢查權限。如果你沒有檢查權限。請添加權限。我希望它會工作

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

否則我建議檢查下面的代碼snippest爲錄製音頻,並檢查運行權限:錄音的

public static final int RequestPermissionCode = 1; 

檢查許可,並開始錄製「

if(checkPermission()) { 

      AudioSavePathInDevice = 
       Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + 
       CreateRandomAudioFileName(5) + "AudioRecording.3gp"; 

      MediaRecorderReady(); 

      try { 
       mediaRecorder.prepare(); 
       mediaRecorder.start(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      buttonStart.setEnabled(false); 
      buttonStop.setEnabled(true); 

      Toast.makeText(MainActivity.this, "Recording started", 
       Toast.LENGTH_LONG).show(); 
     } else { 
      requestPermission(); 
     } 

    private void requestPermission() { 
    ActivityCompat.requestPermissions(MainActivity.this, new 
    String[]{WRITE_EXTERNAL_STORAGE, RECORD_AUDIO}, RequestPermissionCode); 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, 
    String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case RequestPermissionCode: 
      if (grantResults.length> 0) { 
      boolean StoragePermission = grantResults[0] == 
      PackageManager.PERMISSION_GRANTED; 
      boolean RecordPermission = grantResults[1] == 
      PackageManager.PERMISSION_GRANTED; 

     if (StoragePermission && RecordPermission) { 
      Toast.makeText(MainActivity.this, "Permission Granted", 
       Toast.LENGTH_LONG).show(); 
      } else { 
      Toast.makeText(MainActivity.this,"Permission 
       Denied",Toast.LENGTH_LONG).show(); 
     } 
     } 
    break; 
    } 
} 

public boolean checkPermission() { 
    int result = ContextCompat.checkSelfPermission(getApplicationContext(), 
    WRITE_EXTERNAL_STORAGE); 
    int result1 = ContextCompat.checkSelfPermission(getApplicationContext(), 
    RECORD_AUDIO); 
    return result == PackageManager.PERMISSION_GRANTED && 
    result1 == PackageManager.PERMISSION_GRANTED; 
} 

欲瞭解更多信息請參閱Android - Audio Capture

我希望它能正常工作。

+0

它已經加入了清單。 –

+0

請檢查編輯的答案和建議 –

+0

謝謝!!! ..它真的工作.. –