Android 应用程序 : java. lang.IllegalStateException:无法执行 Activity 的方法

标签 android

您好,我正在学习 Android,需要一些帮助。我想让应用女巫读取您的 wifi ip 但我收到错误请帮助我。

主要 Activity 。

public class MainActivity extends ActionBarActivity {

    MyService karolisService;
    boolean isBound = false;

    public void showIP(View view){
        String showIP = karolisService.getIpAddr();
        TextView karolisText = (TextView) findViewById(R.id.textView);
        karolisText.setText(showIP);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent i = new Intent(this, MyService.class);
        bindService(i, karolisConnection, Context.BIND_AUTO_CREATE);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private ServiceConnection karolisConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            MyBinder binder = (MyBinder) service;
            karolisService = binder.getService();
            isBound = true;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            isBound = false;
        }
    };

MyService
public class MyService extends Service {

    private final IBinder karolisBinder = new MyBinder();

    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return karolisBinder;
    }

    public String getIpAddr(){
        WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
        String showIP = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
        return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
    }

    public class MyBinder extends Binder {
        MyService getService(){
            return MyService.this;
        }
    }

}

Android list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.karolis.myapk" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
        <user-permission android:name="android.permission.INTERNET" />
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true" >
        </service>
    </application>

</manifest>

日志

    4-26 17:35:49.507  13805-13805/com.example.karolis.myapk D/AndroidRuntime﹕ Shutting down VM
    04-26 17:35:49.507  13805-13805/com.example.karolis.myapk E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: com.example.karolis.myapk, PID: 13805
        java.lang.IllegalStateException: Could not execute method of the activity
                at android.view.View$1.onClick(View.java:4247)
                at android.view.View.performClick(View.java:5191)
                at android.view.View$PerformClick.run(View.java:21019)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:145)
                at android.app.ActivityThread.main(ActivityThread.java:5940)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
         Caused by: java.lang.reflect.InvocationTargetException
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at android.view.View$1.onClick(View.java:4242)
                at android.view.View.performClick(View.java:5191)
                at android.view.View$PerformClick.run(View.java:21019)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:145)
                at android.app.ActivityThread.main(ActivityThread.java:5940)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
         Caused by: java.lang.SecurityException: WifiService: Neither user 10257 nor current process has android.permission.ACCESS_WIFI_STATE.
                at android.os.Parcel.readException(Parcel.java:1540)
                at android.os.Parcel.readException(Parcel.java:1493)
                at android.net.wifi.IWifiManager$Stub$Proxy.getConnectionInfo(IWifiManager.java:1348)
                at android.net.wifi.WifiManager.getConnectionInfo(WifiManager.java:1485)
                at com.example.karolis.myapk.MyService.getIpAddr(MyService.java:35)
                at com.example.karolis.myapk.MainActivity.showIP(MainActivity.java:29)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at android.view.View$1.onClick(View.java:4242)
                at android.view.View.performClick(View.java:5191)
                at android.view.View$PerformClick.run(View.java:21019)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:145)
                at android.app.ActivityThread.main(ActivityThread.java:5940)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
    04-26 17:35:51.977  13805-13805/com.example.karolis.myapk I/Process﹕ Sending signal. PID: 13805 SIG: 9

最佳答案

application 标记之前的 Manifest.xml 中添加权限。

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

list .xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.karolis.myapk" >

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true" >
        </service>
    </application>

</manifest>

关于Android 应用程序 : java. lang.IllegalStateException:无法执行 Activity 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29879239/

相关文章:

java - 使用备用权限启动相机 Activity

android - 在Android中放置点击对话框?

android - 创建TCP套接字时无法识别Android主机名

android - AOSP 源代码树中的这些版本名称是什么意思?

java - 如何设置弹窗的画面自动适应横屏的长度

java - OnTouchListener 坐标不正确

android - GCM 推送通知大图标大小

android - RecyclerView 在底部加载更多进度条

android - 点击无障碍服务后返回App

java - 如何设置动态创建的表格布局单元格高度和宽度固定