1

我想在我的 Android 应用程序中有两件事。

获取设备 id,然后使用此 id 打开网页。例如myserver.com/deviceId

我的主要 java 类如下所示:

package es.unican.CityInfo;

import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.provider.Settings.Secure;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 


        WebView mywebview = (WebView) findViewById(R.id.webview);
        mywebview.loadUrl("http://www.google.com");

        //enabling Javascript
        WebSettings webSettings = mywebview.getSettings();
        webSettings.setJavaScriptEnabled(true);

        //opening links in my webview. if you delete this line , any link pressed will cause the browser to start
        mywebview.setWebViewClient(new WebViewClient());

    }


}

为了获得设备ID,我读到我应该做这样的事情:

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID); 

但是我不明白应该在哪里放置 android_id 代码,因为我总是出错。

错误是:

Multiple markers at this line:

- The method getcontext() is undefined for the type MainActivity
- Illegal modifier for parameter android_id; only final is permitted
4

6 回答 6

2
private String android_id; // declared on top of class

android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); // called inside onCreate
于 2013-04-04T09:23:25.637 回答
2

用这个替换你的错误行:

String android_id = Secure.getString(this.getContentResolver(),Secure.ANDROID_ID); 
于 2013-04-04T09:23:59.943 回答
2

删除私有修饰符,也不要使用 getContext() 而是使用 getApplicationContext() 或简单地 getContentResolver()

在您的 onCreate() 方法中:

String android_id = Secure.getString(getContentResolver(),Secure.ANDROID_ID); 
于 2013-04-04T09:25:53.707 回答
1

使用这条线

 String android_id = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);

由于您在方法内声明字符串,因此它将在其中限定范围。您可以使用此获取 Activity 上下文。

于 2013-04-04T09:23:38.810 回答
1

更改代码中的行:

    getContext to getBaseContext
于 2013-04-04T09:25:53.687 回答
0
import android.provider.Settings.Secure;

    String android_id = Secure.getString(getApplicationContext().getContentResolver(),Secure.ANDROID_ID);
于 2015-06-02T23:54:36.197 回答