2017-06-30 17 views
-2

permissionsSMSHelperクラスのgetPermissiontoReadSMSおよびonRequestPermissionsResultメソッドを使用しようとしています。 n ewMessagePage.javaファイルとhomePage.javaファイルのonCreateメソッドで参照すると、毎回「方法を解決できません」というエラーが表示されます。何が間違っているのか分かりません。誰かが助けることができれば、私はそれを感謝します。他のファイルのメソッドの参照

permisssionsSMSHelper.java

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.support.annotation.NonNull; 
import android.support.v4.content.ContextCompat; 
import android.widget.Toast; 

public class permissionsSMSHelper extends homePage { 

public int READ_SMS_PERMISSIONS_REQUEST; 

public permissionsSMSHelper(int req) { 
    READ_SMS_PERMISSIONS_REQUEST = req; 
} 

public void getPermissionToReadSMS(int reqVal) { 
    READ_SMS_PERMISSIONS_REQUEST = reqVal; 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) 
      != PackageManager.PERMISSION_GRANTED) { 
     if (shouldShowRequestPermissionRationale(
       Manifest.permission.READ_SMS)) { 
      Toast.makeText(this, "Please allow permission", Toast.LENGTH_SHORT).show(); 
     } 
     requestPermissions(new String[]{Manifest.permission.READ_SMS}, reqVal); 
    } 
} 

public RequestPermissionsResult(int req) { 
    READ_SMS_PERMISSIONS_REQUEST = req; 
} 

public void onRequestPermissionsResult(int requestCode, 
             int requestNum, 
             @NonNull String permissions[], 
             @NonNull int[] grantResults) { 
    READ_SMS_PERMISSIONS_REQUEST= requestNum; 

    if(requestCode == requestNum) { 
     if(grantResults.length == 1 && 
       grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      Toast.makeText(this, "Read SMS permission granted", Toast.LENGTH_SHORT).show(); 
      refreshSmsInbox(); 
     }else { 
      Toast.makeText(this, "Read SMS permission denied", Toast.LENGTH_SHORT).show(); 
     } 
    }else { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 
} 

homePage.java

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

     mDrawerList = (ListView)findViewById(R.id.navList); 
     mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 

     messages = (ListView) findViewById(R.id.messages); 
     arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, smsMessagesList); 
     messages.setAdapter(arrayAdapter); 

     if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) { 

      permissionsSMSHelper SMScheck = new permissionsSMSHelper(1); 

      SMScheck.getPermissionToReadSMS(1); 
      SMScheck.onRequestPermissionsResult(1); 

     }else { 
      refreshSmsInbox(); 
     } 

     addDrawerItems(); 
     FABListener(); 
    } 

newMessagePage.java

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.support.v4.content.ContextCompat; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

public class newMessagePage extends homePage { 

SmsManager smsManager = SmsManager.getDefault(); 
EditText input; 

public void onSendClick(View view) { 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) 
      != PackageManager.PERMISSION_GRANTED) { 

     permissionsSMSHelper SMScheck = new permissionsSMSHelper(1); 

     SMScheck.getPermissionToReadSMS(1); 
     SMScheck.onRequestPermissionsResult(1); 

    }else { 

     smsManager.sendTextMessage("17739965441", null, input.getText().toString(), null, null); 
     Toast.makeText(this, "Message sent!", Toast.LENGTH_SHORT).show(); 
    } 
} 

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

    input = (EditText) findViewById(R.id.input); 
} 
} 
+0

ようこそStackOverflowです。残念ながら、これは無料のデザイン/コーディングもデバッグサービスも、チュートリアルサイトもWeb検索の代替もありません。私たちは[特定の問題](https://stackoverflow.com/help/on-topic)を解決するのを助けることができますが、**あなたの仕事** ** [いくつかの努力をする](http://meta.stackoverflow.com/questions/261592)**初級**((再)検索(https://google.com/)**を含む)の件名に** –

答えて

0

それは間違っている。 PermissionsSMSHelperクラスがHomePageに拡張されていて、のインスタンスをHomePageに作成していて、NewMessagePageの場合は間接的に別のクラスのアクティビティを参照しているため、メモリリークが発生します。 extends homePagePermissionsSMSHelperから削除し、コンストラクタでContextを渡すか、メソッドをPermissonsSMSHelper内で静的にし、すべてのメソッド呼び出しでContextを渡します。 あなたの命名規則はTOO BAD

関連する問題