【发布时间】:2016-07-01 19:29:54
【问题描述】:
我已成功从我的应用调用第三方应用
类似应用:Google Drive 和 Google Photos
代码:
btnL1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openApp(KioskActivity.this, "com.google.android.apps.docs");
}
});
btnL2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openApp(KioskActivity.this, "com.google.android.apps.photos");
}
});
public static boolean openApp(Context context, String packageName) {
PackageManager manager = context.getPackageManager();
try {
Intent i = manager.getLaunchIntentForPackage(packageName);
if (i == null) {
return false;
//throw new PackageManager.NameNotFoundException();
}
i.addCategory(Intent.CATEGORY_LAUNCHER);
context.startActivity(i);
return true;
} catch (Exception e) {
return false;
}
}
UPDATE #1这是我跟随的Code从自己的应用程序调用第三方应用程序活动
点击按钮调用第三方应用的Activity(如:Last FM)
final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");
intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm"));
startActivity(intentDeviceTest);
但总是得到android.content.ActivityNotFoundException: Unable to find explicit activity class {fm.last.android/fm.last.android.LastFm}; have you declared this activity in your AndroidManifest.xml? And If I use try-catch blog or if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } 以避免 ANF 异常然后它没有显示异常,但仍然无法调用活动
我已经在我的设备上安装了 Last FM 应用程序,那可能是什么原因?
UPDATE #2:我创建了 Hello World 应用并成功调用了该应用
截图
Screenshot 1(刚刚启用 Kiosk 模式)
Screenshot 2(刚刚调用了 Hello World 应用并按下返回退出 Hello World)
问题:为什么会显示导航栏和底栏(我的意思是返回、主页和最近键)
这是我的updated code:
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 一词本身描述了该设备仅运行单个应用程序。它会阻止其他人并自行卸载..
-
@ShreeKrishna 首先是好名字,其次我刚刚安装了那个 apk,但是我的设备没有处于 kiosk 模式,所以我该如何卸载那个 apk...
-
@Sonali 如果不在 kiosk 模式下,您可以轻松卸载它
-
我已经尝试了很多次,但无法卸载该 apk,总是出现对话框,其中显示取消已启用并且可以禁用@Amy
-
进入设置->app->kiosk app->强制停止
标签: android android-5.0-lollipop kiosk-mode android-5.1.1-lollipop