问题描述
我正在尝试修改此应用。但这是我第一次必须解决没有发生在我身上的权限问题。我已经粘贴了代码和 logcat。请告诉我一个解决方案。
getdeviceid:用户10214不符合访问要求 设备标识符
喷溅
包com.xitij.spintoearn.Activity;
import android.Manifest;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
import com.facebook.ads.AudienceNetworkAds;
import com.gun0912.tedpermission.PermissionListener;
import com.gun0912.tedpermission.TedPermission;
import com.xitij.spintoearn.Models.Settings;
import com.xitij.spintoearn.Models.User;
import com.xitij.spintoearn.R;
import com.xitij.spintoearn.Util.Constant;
import com.xitij.spintoearn.Util.Ex;
import com.xitij.spintoearn.Util.Method;
import com.xitij.spintoearn.Util.RestAPI;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
import cz.msebera.android.httpclient.Header;
public class Splash extends AppCompatActivity {
private static int SPLASH_TIME_OUT = 2000;
private Constant constant;
private String Getdeviceid(){
TelephonyManager tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = null;
int readIMEI= ContextCompat.checkSelfPermission(this,Manifest.permission.READ_PHONE_STATE);
if(deviceid == null) {
if (readIMEI == PackageManager.PERMISSION_GRANTED) {
deviceid = tm.getdeviceid().toString();
}
}
return deviceid;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AudienceNetworkAds.initialize(this);
requestwindowFeature(Window.FEATURE_NO_TITLE);
getwindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_splash);
PermissionListener permissionlistener = new PermissionListener() {
@Override
public void onPermissionGranted() {
Constant.deviceid = Getdeviceid();
login(Constant.deviceid);
//Toast.makeText(Splash.this,"Permission Granted",Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionDenied(List<String> deniedPermissions) {
finish();
}
};
TedPermission.with(this)
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.READ_PHONE_STATE,Manifest.permission.ACCESS_NETWORK_STATE,Manifest.permission.RECORD_AUdio)
.check();
constant = new Constant(Splash.this);
Constant.deviceid = Getdeviceid();
Ex.getIPaddress();
if(Ex.isConnectionEnable(this) && Ex.checkAndRequestPermissions(this,this)){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//login(Constant.deviceid);
}
},SPLASH_TIME_OUT);
}
}
public void login(final String deviceid) {
String login = RestAPI.API_Device_Login + "&deviceid=" + deviceid;
AsyncHttpClient client = new AsyncHttpClient();
client.get(login,null,new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode,Header[] headers,byte[] responseBody) {
Log.d("Response",new String(responseBody));
String res = new String(responseBody);
try {
JSONObject jsonObject = new JSONObject(res);
JSONArray jsonArray = jsonObject.getJSONArray(Constant.AppSid);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
String success = object.getString("success");
if (success.equals("1")) {
String user_id = object.getString("user_id");
String name = object.getString("name");
String sendEmail = object.getString("email");
String userPhone = object.getString("phone");
String userCode = object.getString("user_code");
constant.sharedEditor.putBoolean(constant.isLogin,true);
constant.sharedEditor.putString(constant.profileId,user_id);
constant.sharedEditor.putString(constant.userName,name);
constant.sharedEditor.putString(constant.userEmail,sendEmail);
constant.sharedEditor.putString(constant.userPhone,userPhone);
constant.sharedEditor.putString(constant.userCode,userCode);
constant.sharedEditor.commit();
LoadSettings();
Constant.user =new User("00",name,sendEmail,"000",userPhone,userCode);
Method.UserLoginLogs(user_id,"Login",Constant.deviceid);
Intent intent=new Intent(getBaseContext(),MainActivity.class);
startActivity(intent);
finish();
} else {
Intent inst = new Intent(Splash.this,Login.class);
inst.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(inst);
finish();
// Ex.okAlertBox(getResources().getString(R.string.login_Failed_message));
//Toast.makeText(Login.this,getResources().getString(R.string.login_Failed),Toast.LENGTH_SHORT).show();
}
}
} catch (JSONException e) {
e.printstacktrace();
}
}
@Override
public void onFailure(int statusCode,byte[] responseBody,Throwable error) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Splash.this);
alertDialogBuilder.setTitle("Server Maintenance");
alertDialogBuilder.setMessage("System is Undergoing Maintenance. Please try again later.");
alertDialogBuilder.setPositiveButton(getApplication().getResources().getString(R.string.ok_message),new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0,int arg1) {
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
}
public void LoadSettings() {
AsyncHttpClient client = new AsyncHttpClient();
client.get(RestAPI.API_Settings,byte[] responseBody) {
Log.d("Response-ls",new String(responseBody));
String res = new String(responseBody);
try {
JSONObject jsonObject = new JSONObject(res);
JSONArray jsonArray = jsonObject.getJSONArray(Constant.AppSid);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
String app_name = object.getString("app_name");
String app_logo = object.getString("app_logo");
String app_version = object.getString("app_version");
String app_author = object.getString("app_author");
String app_contact = object.getString("app_contact");
String app_email = object.getString("app_email");
String app_website = object.getString("app_website");
String app_description = object.getString("app_description");
String app_developed_by = object.getString("app_developed_by");
String app_faq = object.getString("app_faq");
String app_privacy_policy = object.getString("app_privacy_policy");
String publisher_id = object.getString("publisher_id");
boolean interstital_ad = Boolean.parseBoolean(object.getString("interstital_ad"));
String interstital_ad_id = object.getString("interstital_ad_id");
String interstital_ad_click = object.getString("interstital_ad_click");
boolean banner_ad = Boolean.parseBoolean(object.getString("banner_ad"));
String banner_ad_id = object.getString("banner_ad_id");
boolean rewarded_video_ads = Boolean.parseBoolean(object.getString("rewarded_video_ads"));
String rewarded_video_ads_id = object.getString("rewarded_video_ads_id");
String redeem_currency = object.getString("redeem_currency");
String redeem_points = object.getString("redeem_points");
String redeem_money = object.getString("redeem_money");
String minimum_redeem_points = object.getString("minimum_redeem_points");
String payment_method1 = object.getString("payment_method1");
String payment_method2 = object.getString("payment_method2");
String payment_method3 = object.getString("payment_method3");
String payment_method4 = object.getString("payment_method4");
String daily_spin_limit = object.getString("daily_spin_limit");
String ads_frequency_limit= object.getString("ads_frequency_limit");
String video_add_point= object.getString("video_add_point");
String app_refer_reward= object.getString("app_refer_reward");
String registration_reward= object.getString("registration_reward");
String video_ads_limit= object.getString("daily_rewarded_video_ads_limits");
Constant.settings = new Settings(app_name,app_logo,app_version,app_author,app_contact,app_email,app_website,app_description,app_developed_by,app_faq,app_privacy_policy,publisher_id,interstital_ad_id,interstital_ad_click,banner_ad_id,rewarded_video_ads_id,redeem_currency,redeem_points,redeem_money,minimum_redeem_points,payment_method1,payment_method2,payment_method3,payment_method4,interstital_ad,banner_ad,rewarded_video_ads,daily_spin_limit,ads_frequency_limit,video_add_point,app_refer_reward,registration_reward,video_ads_limit);
Log.d("Response-ls",ads_frequency_limit );
}
} catch (JSONException e) {
e.printstacktrace();
}
}
@Override
public void onFailure(int statusCode,Throwable error) {
}
});
}
}
常数
package com.xitij.spintoearn.Util;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.SharedPreferences;
import com.xitij.spintoearn.Models.CoinHistory;
import com.xitij.spintoearn.Models.Settings;
import com.xitij.spintoearn.Models.SpinCounter;
import com.xitij.spintoearn.Models.User;
import com.xitij.spintoearn.Models.UserBalance;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.reward.rewardedvideoad;
public class Constant {
public static final String AppSid="spin";
public static final int POINT_VIDEO_MIN=1;
public static final int POINT_VIDEO_MAX=100;
public static final int RATE_POINT=1000;
public static final int DAILY_CHECK=100;
public static String Total_Point;
//Enter milliseconds
public static final int Waitsecond=8000;
public static String PublicIP;
public static String deviceid;
public static final String ReferPoint = "10";
public static final String VIDEO_AD_ID="ca-app-pub-3940256099942544/8691691433";
public static final String INSTE_AD_ID="ca-app-pub-3940256099942544/1033173712";
public static final String AD_ID= "#";
public static int AD_COUNT = 0;
public static int VIDEO_AD_COUNT= 0;
public static InterstitialAd mInterstitial;
public static rewardedvideoad mrewardedvideoad;
public static User user;
public static UserBalance userBalance;
public static CoinHistory coinHistory;
public static Settings settings;
public static SpinCounter spinCounter;
public SharedPreferences sharedPreferences;
public SharedPreferences.Editor sharedEditor;
private Activity activity;
private final String loginPerfm = "login";
public String isLogin = "isLogin";
private String deviceid = "deviceid";
public String profileId = "profileId";
public String userEmail = "userEmail";
public String userPassword = "userPassword";
public String userName = "userName";
public String userPhone = "userPhone";
public String userCode = "userCode";
public String Spin_Count = "Spin_Count";
@SuppressLint("CommitPrefEdits")
public Constant(Activity activity) {
this.activity = activity;
sharedPreferences = activity.getSharedPreferences(loginPerfm,0); // 0 - for private mode
sharedEditor = sharedPreferences.edit();
}
}
日志猫
2021-03-08 08:05:02.525 14296-14296/? E/itij.spintoear:runtime_flags 中设置的未知位:0x8000 2021-03-08 08:05:04.622 14296-14296/com.xitij.spintoearn E/fdsan:试图关闭文件描述符 74,预计为无人拥有,实际归 FILE* 0x76c3b37018 所有 2021-03-08 08:05:04.758 14296-14296/com.xitij.spintoearn E/AndroidRuntime:致命异常:主要 进程:com.xitij.spintoearn,PID:14296 java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.xitij.spintoearn/com.xitij.spintoearn.Activity.Splash}: java.lang.SecurityException: getdeviceid: 用户 10214 不符合访问设备标识符的要求。 在 android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3408) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3547) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2080) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:264) 在 android.app.ActivityThread.main(ActivityThread.java:7581) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980) 引起:java.lang.SecurityException: getdeviceid: 用户 10214 不符合访问设备标识符的要求。 在 android.os.Parcel.createException(Parcel.java:2071) 在 android.os.Parcel.readException(Parcel.java:2039) 在 android.os.Parcel.readException(Parcel.java:1987) 在 com.android.internal.telephony.ITelephony$Stub$Proxy.getdeviceid(ITelephony.java:10389) 在 android.telephony.TelephonyManager.getdeviceid(TelephonyManager.java:1620) 在 com.xitij.spintoearn.Activity.Splash.Getdeviceid(Splash.java:53) 在 com.xitij.spintoearn.Activity.Splash.onCreate(Splash.java:99) 在 android.app.Activity.performCreate(Activity.java:7805) 在 android.app.Activity.performCreate(Activity.java:7794) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) 在 android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3378) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3547) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2080) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:264) 在 android.app.ActivityThread.main(ActivityThread.java:7581) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)