Java 为什么不在特定手机上弹出运行时权限对话框?
Splash.java:Java 为什么不在特定手机上弹出运行时权限对话框?,java,android,Java,Android,Splash.java: protected void onCreate(Bundle savedInstanceState) { ... Permission.checkPermission(this); ... } public static final String[] permission = { Manifest.permission.CAMERA, Manifes
protected void onCreate(Bundle savedInstanceState) {
...
Permission.checkPermission(this);
...
}
public static final String[] permission = {
Manifest.permission.CAMERA,
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.NFC,
Manifest.permission.VIBRATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_APN_SETTINGS,
Manifest.permission.SEND_SMS,
Manifest.permission.RECEIVE_SMS
};
public static void checkPermission(Activity act){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for(String permission : permission) {
if(ContextCompat.checkSelfPermission(act, permission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(act, permission, 1);
return;
}
}
}
}
<manifest>
<application>
...
</application>
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
</manifest>
Permission.java:
protected void onCreate(Bundle savedInstanceState) {
...
Permission.checkPermission(this);
...
}
public static final String[] permission = {
Manifest.permission.CAMERA,
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.NFC,
Manifest.permission.VIBRATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_APN_SETTINGS,
Manifest.permission.SEND_SMS,
Manifest.permission.RECEIVE_SMS
};
public static void checkPermission(Activity act){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for(String permission : permission) {
if(ContextCompat.checkSelfPermission(act, permission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(act, permission, 1);
return;
}
}
}
}
<manifest>
<application>
...
</application>
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
</manifest>
Manifest.xml:
protected void onCreate(Bundle savedInstanceState) {
...
Permission.checkPermission(this);
...
}
public static final String[] permission = {
Manifest.permission.CAMERA,
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.NFC,
Manifest.permission.VIBRATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_APN_SETTINGS,
Manifest.permission.SEND_SMS,
Manifest.permission.RECEIVE_SMS
};
public static void checkPermission(Activity act){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for(String permission : permission) {
if(ContextCompat.checkSelfPermission(act, permission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(act, permission, 1);
return;
}
}
}
}
<manifest>
<application>
...
</application>
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
</manifest>
我已经尝试过使用运行API27的AVD,它可以工作,但在手机上却不行
目标和编译SDK版本:27
SDK最低版本:16
我建议在虚拟设备(AVD管理器)上进行测试,这样也可以获得更好的屏幕截图;-)李>
编译和目标SDK版本是什么
啊,是的,我已经编辑了我的问题,我的目标和编译SDK是27,最低是16。我还尝试过使用安卓8.1的虚拟设备,它在那里运行良好。第二个截图是通过谷歌翻译:-)