【问题标题】:How to ask permission for to Access Network State, Access Wifi State and Internet in libGdx如何在 libGdx 中请求访问网络状态、访问 Wifi 状态和 Internet 的权限
【发布时间】:2020-07-03 23:10:10
【问题描述】:

我尝试了很多方法来请求访问网络状态的权限,但是每当我在渲染或创建方法中编写它时,应用程序就会崩溃。请帮我写一段代码,这样每当我打开应用程序时,我首先会被要求Internet权限

在AndroidManifest.xml文件中,

 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在 AndroidLauncher.java 文件中,

public void checkConnection(){
        ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
        if(null != activeNetwork){
            if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI){
                Toast.makeText(this, "Wifi Enabled", Toast.LENGTH_SHORT).show();
            }else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE){
                Toast.makeText(this, "Data Network Enabled", Toast.LENGTH_SHORT).show();
            }
        }else {
            Toast.makeText(this, "No Internet Connection", Toast.LENGTH_SHORT).show();
        }
    }

请帮助我并告诉我应该在哪个文件和方法(例如:-创建,渲染)中编写代码来解决我的问题。

【问题讨论】:

  • 你必须在主线程上做,而不是游戏线程。
  • 我们需要崩溃堆栈跟踪来提供帮助。

标签: android-studio libgdx


【解决方案1】:

首先:在Libgdx中不能使用android代码,只能使用Libgdx框架的方法或变量,所以如果要申请上网权限,则必须在AndroidLauncher中申请。 java不在GdxGame中。

请求许可:- (这在创建时显示对话框)

ActivityCompat.requestPermissions(MainActivity.this, new String[]{ACCESS_WIFI_STATE}, 1);

获取Activity结果如下:

@Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 

switch (requestCode) { 

case 1: { 
// 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.

 Toast.makeText(AndroidLauncher.this, "Permission denied to read your ACCESS_WIFI_STATE", Toast.LENGTH_SHORT).show();

 }

 return; 
} 

// other 'case' lines to check for other // permissions this app might request 

} }

第二:在开始游戏前不要忘记请求许可,以防止游戏崩溃。

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 2012-03-16
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2023-03-23
    • 2021-03-08
    相关资源
    最近更新 更多