我想更改默认的拨号器应用程序并搜索一些文章。
但是在测试中,我遇到了问题,我的真实手机(Android 6.0)没有显示弹出窗口。
InRealPhoneTest.png
因此,我尝试在虚拟机(android 6.0)中进行测试,它可以完美运行。
InVirtualMachineTest.png
下面是我的代码:
Application.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.slb.test1">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:directBootAware="true"
android:excludeFromRecents="true"
android:launchMode="singleInstance"
android:process=":interim"
android:resizeableActivity="true"
android:screenOrientation="nosensor">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.action.DIAL"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="tel"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.DIAL"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
MainApplication.java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE_SET_DEFAULT_DIALER = 289;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void ViewClick(View view){
try {
Intent intent = new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER);
intent=intent.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode==REQUEST_CODE_SET_DEFAULT_DIALER){
if(resultCode==RESULT_OK){
Toast.makeText(this,"accept",Toast.LENGTH_SHORT).show();
}else if(resultCode==RESULT_CANCELED){
Toast.makeText(this,"cancel",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"unknown",Toast.LENGTH_SHORT).show();
}
}
}}
我的目的是通过InCallService服务类更改默认的应用程序拨号程序,我只是在测试弹出窗口。 当我在android 6.0的虚拟机中处理程序时,我可以选择在弹出窗口中接受还是取消。但是,当我在版本为android 6.0的真实电话中处理程序时,电话不会显示弹出窗口。
所以,我不明白为什么它不能在真正的手机上工作。你能告诉我一些吗?您的回答将不胜感激。