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キークラス-使用:
我々は使用中,1台のデバイスのマイクロフォンリソースが1つしかないため,主にisPermitメソッドで自分の録音操作を再呼び出す.
私たちは普段開発中に遭遇する可能性があります.申請した
メソッド...
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メソッドで自分の録音操作を再呼び出す.