AudioRecordがサードパーティ管理アプリケーションによって無効になったかどうかを検出するには、demoを添付します.

4310 ワード

問題の説明
私たちは普段開発中に遭遇する可能性があります.申請したpublic boolean checkRecordAudioPermission(){ PackageManager pm = getPackageManager(); boolean permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECORD_AUDIO", "packageName")); return permission; }しかし、戻った結果は永遠にtrueであることがわかります.これはManifestに登録権限があるかどうかを判断するだけで、権限がシステムによって無効になったかどうかを判断することはできないようです.
メソッド...
Context.checkSelfPermission(permission_name)などですが、最終的には問題を解決できません
究極のソリューション
デシベル値から現在のアプリケーションの録音権限が第三者アプリケーションによって禁止されているか否かを判断する項目アドレス詳細は[https://github.com/Z644912187/RecordAudioPermissionDetect]-説明:RecordAudioPermissionDetectキークラス-使用:
public class MainActivity extends AppCompatActivity implements RecordAudioPermissionDetect.onPermitRecordListener {

    private static final String TAG = "MainActivity";
    private RecordAudioPermissionDetect mRecordAudioPermissionDetect;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mRecordAudioPermissionDetect = new RecordAudioPermissionDetect(this);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                mRecordAudioPermissionDetect.startCheckRecordPermission();
            }
        });

    }

    @Override
    protected void onResume() {
        super.onResume();
        mRecordAudioPermissionDetect.startCheckRecordPermission();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mRecordAudioPermissionDetect.stopCheck();
    }

    @Override
    public void isPermit(boolean flag) {
        if (!flag) {
            mRecordAudioPermissionDetect.showMissingPermissionDialog(this);
        } else {
            //TODO               
        }
    }
}
注意:
我々は使用中,1台のデバイスのマイクロフォンリソースが1つしかないため,主にisPermitメソッドで自分の録音操作を再呼び出す.