我有一個服務,它主演一個新線程。我的任務是從這個線程檢索IMEI。我已經試過這樣的事情:Android:不能從線程獲取Imei
主營:
public class MainActivity extends AppCompatActivity {
String imei;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TelephonyManager mg=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
imei = mg.getDeviceId();
Intent intent = new Intent();
startService(new Intent(getBaseContext(), MyService.class));
}
public String getIMEI(){
Log.d("THIS IS THE IMEI", imei);
return imei;
}
這是我的服務類:
public class MyService extends Service {
Connection con = new Connection();
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate(){
Thread t = new Thread(con);
t.start();
}
這是我運行的類:
public class Connection implements Runnable {
MainActivity app = new MainActivity();
@Override
public void run() {
String imei = app.getIMEI();
}
但是,當我代碼達到String imei = app.getIMEI()
我的應用程序崩潰並拋出異常。
了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.asder.vediamo/com.asder.vediamo.MainActivity}:java.lang.SecurityException異常:getDeviceId:無論用戶10057也不當前進程機器人。 permission.READ_PHONE_STATE。
。在我的Android清單:如果你需要一個上下文中使用
MainActivity app = new MainActivity();
:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MyService"/>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_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.WRITE_EXTERNAL_STORAGE" />
如果你直接在你的Runnable類中獲得'IMEI'會出現什麼問題? –
目前使用哪個API級別? –