Android 从自己的应用程序调用第三方应用程序活动
我已成功从我的应用程序调用第三方应用程序 谷歌驱动和谷歌照片等应用 代码: 更新#1以下是我从自己的应用程序调用第三方应用程序的活动 点击第三方应用的呼叫活动按钮(如:Last FM) 但始终获取Android 从自己的应用程序调用第三方应用程序活动,android,android-5.0-lollipop,kiosk-mode,android-5.1.1-lollipop,Android,Android 5.0 Lollipop,Kiosk Mode,Android 5.1.1 Lollipop,我已成功从我的应用程序调用第三方应用程序 谷歌驱动和谷歌照片等应用 代码: 更新#1以下是我从自己的应用程序调用第三方应用程序的活动 点击第三方应用的呼叫活动按钮(如:Last FM) 但始终获取android.content.ActivityNotFoundException:无法找到显式活动类{fm.last.android/fm.last.android.LastFm};您是否在AndroidManifest.xml中声明了此活动?如果我使用try catch blog或If(intent
android.content.ActivityNotFoundException:无法找到显式活动类{fm.last.android/fm.last.android.LastFm};您是否在AndroidManifest.xml中声明了此活动?如果我使用try catch blog或If(intent.resolveActivity(getPackageManager())!=null){startActivity(intent);}
来避免ANF异常,那么它不会显示异常,但仍然无法调用活动
我已经在我的设备上安装了最后一个FM应用程序,那么原因是什么呢
更新#2:我创建了Hello World应用程序,并成功调用了该应用程序
屏幕截图
屏幕截图1
(刚刚启用信息亭模式)
屏幕截图2
(刚刚调用Hello World应用程序并按下后退退出Hello World)
问题:为什么会显示导航栏和底部栏(我指的是返回键、主页键和最近键)
这是我的更新代码
:
public class KioskActivity extends Activity {
final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(flags);
getActionBar().hide();
setContentView(wenchao.kiosk.R.layout.activity_lock_activity);
DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName mDPM = new ComponentName(this, MyAdmin.class);
if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) {
String[] packages = {this.getPackageName()};
startLockTask();
} else {
Toast.makeText(getApplicationContext(),"Not owner", Toast.LENGTH_LONG).show();
}
setVolumMax();
Button lock_btn = (Button)findViewById(wenchao.kiosk.R.id.lock_button);
Button unlock_btn = (Button)findViewById(wenchao.kiosk.R.id.unlock_button);
Button appButton = (Button) findViewById(R.id.appButton);
lock_btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
startLockTask();
return false;
}
});
unlock_btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
stopLockTask();
return false;
}
});
appButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");
intentDeviceTest.setComponent(new ComponentName("com.example.hello1","com.example.hello1.MainActivity"));
startActivity(intentDeviceTest);
}
});
}
Kiosk模式正式称为任务锁定。这个名字包含了一个线索。只有在第三方活动允许将其启动到同一任务中时,才能启动第三方活动。如果没有,您可以选择:
- 在启动第三方活动之前禁用任务锁定
- 请求第三方活动的维护者更改其启动模式
- 寻找替代的第三方活动
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");
intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm"));
startActivity(intentDeviceTest);
public class KioskActivity extends Activity {
final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(flags);
getActionBar().hide();
setContentView(wenchao.kiosk.R.layout.activity_lock_activity);
DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName mDPM = new ComponentName(this, MyAdmin.class);
if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) {
String[] packages = {this.getPackageName()};
startLockTask();
} else {
Toast.makeText(getApplicationContext(),"Not owner", Toast.LENGTH_LONG).show();
}
setVolumMax();
Button lock_btn = (Button)findViewById(wenchao.kiosk.R.id.lock_button);
Button unlock_btn = (Button)findViewById(wenchao.kiosk.R.id.unlock_button);
Button appButton = (Button) findViewById(R.id.appButton);
lock_btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
startLockTask();
return false;
}
});
unlock_btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
stopLockTask();
return false;
}
});
appButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");
intentDeviceTest.setComponent(new ComponentName("com.example.hello1","com.example.hello1.MainActivity"));
startActivity(intentDeviceTest);
}
});
}